Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

offset value

Former Member
0 Kudos

Hai,

Iam new to abap can any one solve the above example:

data: c type i,

c1 type i,

len type i,

flag type c.

parameters word(20).

c = 0.

len = strlen( word ).

c1 = len - 1.

len = len / 2.

flag = ' '.

do len times.

if ( wordc(1) <> wordc1(1) ).

flag = 'X'.

endif.

enddo.

if flag = 'X'.

write: / 'Word', word, 'is not Palindrome'.

else.

write: / 'Word', word, 'is Palindrome'.

endif.

Inthe above program

if word = abap

than what is the value of

wordc(1) and wordc1(1)

and how many times the do statement work.

Please explain the above program with the above example.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

hi,

you can find out these values through debugging

word+c(1) = 'a'

word+c1(1) = 'b'

do statment execute once.

cheers,

sasi

9 REPLIES 9

Former Member
0 Kudos

hi,

you can find out these values through debugging

word+c(1) = 'a'

word+c1(1) = 'b'

do statment execute once.

cheers,

sasi

0 Kudos

Hi,

i think there is a function too (to compare with your source code) for your problem:

STRING_REVERSE

Andreas

0 Kudos

Hai,

I have one doubt,

here len=len/2

then len =2

so do statement will execute twice, why once.

0 Kudos

hi,

sorry for my above answer

word+c(1) = 'a'

word+c1(1) = 'a'

loop will execute 2 times

sasi

Former Member
0 Kudos

Hi

data: c type i,

c1 type i,

len type i,

flag type c.

parameters word(20).

len = strlen( word ).

c1 = len - 1.

flag = ' '.

do.

if ( wordc(1) <> wordc1(1) ).

flag = 'X'.

exit.

endif.

c = c + sy-index.

c1 = len - sy-index.

if c = c1.

exit.

endif.

enddo.

if flag = 'X'.

write: / 'Word', word, 'is not Palindrome'.

else.

write: / 'Word', word, 'is Palindrome'.

endif.

Max

Message was edited by: max bianchi

Former Member
0 Kudos

Hi bhargav,

than what is the value of

wordc(1) and wordc1(1)

here the value of word+c(1) is <b>a</b>

here the value of word+c1(1) is <b>p</b>

and how many times the do statement work.

len = len / 2.

the length of the word divide by 2 that no of times it works.

reward points for helpfull answers and close the thread if your question is solved.

regards,

venu.

0 Kudos

hai,

If do statement execute twice than what is the value of wordc(1) and wordc1(1).

please clear this point.

0 Kudos

Hi

If you have the WORD 'ABAP'

LENGTH = 4

C = 0

C1 = LENGTH - 4.

DO.

IF WORDC(1) <> WORDC1(1).

  • If this control doesn't fail, then it stop the searching, because it useless to go on

FL_PAL = 'X'.

EXIT.

ENDIF.

  • Add + 1 to left offset

C = C + 1.

  • -1 to right offset

C1 = C1 - 1.

IF C = C1.

  • You stop the research becuase you're comparing the same letter:

EXIT.

ENDIF.

ENDDO.

So:

1 WORD+C(1) = 'A': C = 0

WORD+C1(1) = 'P': C1 = 3.

So stop the research:

IF WORD was 'ABA':

1 WORD+C(1) = 'A': C = 0

WORD+C1(1) = 'A': C1 = 2.

2 WORD+C(1) = 'B': C = 1

WORD+C1(1) = 'B': C1 = 1.

So it stop the research:

and so...

Max

vladimir_golovtchiner
Participant
0 Kudos

Hi,

The Palindrom is a word which could be read from left to right and from right to left an the result should be the same.

Below you could see my version of programm that you need.

Because of the Palindroms could contain from odd and even numbers of charakters I didn't use "do len times".

REPORT ZZ_PALINDROM .

DATA: C TYPE I,

C1 TYPE I,

LEN TYPE I,

FLAG TYPE C.

PARAMETERS WORD(20).

C = 0.

LEN = STRLEN( WORD ).

C1 = LEN - 1.

WHILE C <> C1.

IF ( WORDC(1) <> WORDC1(1) ).

FLAG = 'X'.

EXIT.

ELSE.

C = C + 1.

C1 = C1 - 1.

ENDIF.

ENDWHILE.

IF FLAG = 'X'.

WRITE: / 'Word', WORD, 'is not Palindrome'.

ELSE.

WRITE: / 'Word', WORD, 'is Palindrome'.

ENDIF.

The value of WORDc(1) will be the first, the second, the third and so on charekters of the WORD and the value of WORDC1(1) will be the last, the prelast and so on charekters of the WORD.

The do statements In your example works len times!?

Best regards

Vladimir