2008 Apr 14 8:37 AM
hI,
I had written the following to accept the string and display the reverse of the string and find out whether it is a palindrome. Plesae let me know where is the mistake in this program.
DATA:
TEXT(20) VALUE 'MALAYALAM',
LEN TYPE I,
POS TYPE I,
NTEXT(20),
VCHAR.
COMPUTE LEN = STRLEN( TEXT ).
POS = LEN - 1.
DO LEN TIMES.
VCHAR = NTEXT+POS(1).
CONCATENATE NTEXT VCHAR INTO NTEXT.
POS = POS - 1.
ENDDO.
IF TEXT CS NTEXT.
WRITE:/ TEXT, 'IS PALINDROME'.
ELSE.
WRITE:/ TEXT, 'IS NOT A PALINDROME'.
ENDIF.
Thanks.
2008 Apr 14 8:46 AM
Check out the below sample code ....
DATA: p1(1000) TYPE c VALUE 'MALAYALAM'.
DATA: p2(1000) TYPE c.
DATA: s_len TYPE i.
CONDENSE p1 NO-GAPS.
s_len = NUMOFCHAR( p1 ).
DATA: position TYPE i VALUE '0'.
DATA: position2 TYPE i.
DATA: offset1 TYPE i.
DO s_len TIMES.
position2 = s_len - position - 1.
p2+position2(1) = p1+position(1).
position = position + 1.
ENDDO.
WRITE: / p1.
WRITE: / p2.
IF p1 = p2.
WRITE: / 'This is a Palindrome!'.
ENDIF.
hI,
I had written the following to accept the string and display the reverse of the string and find out whether it is a palindrome. Plesae let me know where is the mistake in this program.
DATA:
TEXT(20) VALUE 'MALAYALAM',
LEN TYPE I,
POS TYPE I,
NTEXT(20),
VCHAR.
COMPUTE LEN = STRLEN( TEXT ).
POS = LEN - 1.
DO LEN TIMES.
VCHAR = NTEXT+POS(1).
CONCATENATE NTEXT VCHAR INTO NTEXT.
POS = POS - 1.
ENDDO.
IF TEXT CS NTEXT.
WRITE:/ TEXT, 'IS PALINDROME'.
ELSE.
WRITE:/ TEXT, 'IS NOT A PALINDROME'.
ENDIF.
Thanks.
2008 Apr 14 8:40 AM
Hi,
make len and pos as type N instead of I.because u r using pos as offset operator so it should be type N.
DATA:
TEXT(20) VALUE 'MALAYALAM',
LEN(2) TYPE n,
POS(2) TYPE n,
NTEXT(20),
VCHAR.
COMPUTE LEN = STRLEN( TEXT ).
POS = LEN - 1.
DO LEN TIMES.
VCHAR = TEXT+POS(1).
CONCATENATE NTEXT VCHAR INTO NTEXT.
POS = POS - 1.
ENDDO.
IF TEXT = NTEXT.
WRITE:/ TEXT, 'IS PALINDROME'.
ELSE.
WRITE:/ TEXT, 'IS NOT A PALINDROME'.
ENDIF.
rgds,
bharat.
2008 Apr 14 8:44 AM
hey
this will definetly help u .
report zpalin no standard page heading.
"DATA str TYPE string value 'anoopg'.
parameters str type string.
data len type i value 0.
len = strlen( str ).
write : / 'length of the String =' , len.
data even type i value 0.
data temp type i.
data i type i.
data j type i.
temp = len mod 2.
if temp = 0.
data half type i.
data ch type char1.
data ch1 type char1.
data pos type char3.
data pos1 type char3.
data flag type i value 0.
half = len / 2.
i = 0.
pos1 = len - 1.
while half 0.
ch = str+pos(1).
pos = pos + 1.
half = half - 1.
ch1 = str+pos1(1).
if ch ch1.
flag = 1.
endif.
write : / 'ch =' ,ch ,'ch1=' , ch1.
pos1 = pos1 - 1.
endwhile.
if flag = 1.
write / 'not a palindrome'.
else.
write / 'cong.ts its a palidrome'.
endif.
else.
half = len / 2.
"write half.
half = half - 1.
i = 0.
pos1 = len - 1.
while half 0.
ch = str+pos(1).
pos = pos + 1.
half = half - 1.
ch1 = str+pos1(1).
if ch ch1.
flag = 1.
endif.
write : / 'ch =' ,ch ,'ch1=' , ch1.
pos1 = pos1 - 1.
endwhile.
if flag = 1.
write / 'not a palindrome'.
else.
write / 'cong.ts its a palidrome'.
endif.
endif.
<REMOVED BY MODERATOR>
regards,
rekha.
Edited by: Alvaro Tejada Galindo on Apr 14, 2008 5:21 PM
2008 Apr 14 8:45 AM
Hi,
DATA:
TEXT(20) VALUE 'MALAYALAM',
LEN TYPE I,
POS TYPE I,
NTEXT(20),
VCHAR.
COMPUTE LEN = STRLEN( TEXT ).
POS = LEN - 1.
DO LEN TIMES.
VCHAR = TEXT+POS(1).
CONCATENATE NTEXT VCHAR INTO NTEXT.
POS = POS - 1.
ENDDO.
IF TEXT CS NTEXT.
WRITE:/ TEXT, 'IS PALINDROME'.
ELSE.
WRITE:/ TEXT, 'IS NOT A PALINDROME'.
ENDIF.
check this,
Regards,
Raghu
2008 Apr 14 8:46 AM
Check out the below sample code ....
DATA: p1(1000) TYPE c VALUE 'MALAYALAM'.
DATA: p2(1000) TYPE c.
DATA: s_len TYPE i.
CONDENSE p1 NO-GAPS.
s_len = NUMOFCHAR( p1 ).
DATA: position TYPE i VALUE '0'.
DATA: position2 TYPE i.
DATA: offset1 TYPE i.
DO s_len TIMES.
position2 = s_len - position - 1.
p2+position2(1) = p1+position(1).
position = position + 1.
ENDDO.
WRITE: / p1.
WRITE: / p2.
IF p1 = p2.
WRITE: / 'This is a Palindrome!'.
ENDIF.
2008 Apr 14 8:50 AM
You can try with below code:
PARAMETERS: p_str TYPE char20.
DATA: p_rev TYPE char20.
CALL FUNCTION 'STRING_REVERSE'
EXPORTING
string = p_str
lang = sy-langu
IMPORTING
rstring = p_rev
EXCEPTIONS
too_small = 1
OTHERS = 2.
IF p_str EQ p_rev.
WRITE:/ 'Palendrome'.
ELSE.
WRITE:/ 'Not Palendrome'.
ENDIF.