Задача 2. Определить, является ли натуральное число палиндромом
Предлагается два подхода к решению задачи, в зависимости от типа входных данных: | |
|
|
Сообщение о результате выводится на экран |
Промежуточные данные:
В качестве счётчиков цикла используются переменные i, j
Р - разряд очередной цифры числа, N1 - хранит исходное число
Цифры числа N заносятся в массив Mb, затем переставляются в обратном порядке.
Формируется новое число N2, которое используется для сравнения с исходным
Промежуточные данные: sw - буферная переменная
Символы строки размещаются в обратном порядке в строке s1, которая сравнивается с исходной строкой s
QBASIC
Способ 1 |
Способ 2 |
DEFLNG I-N, P DIM Mb(10000) AS LONG CLS INPUT "Задайте натуральное число"; N N1 = N i = 1 DO Mb(i) = N - INT(N / 10) * 10 N = N \ 10 i = i + 1 LOOP UNTIL N <= 0 N2 = 0: P = 1 FOR j = i - 1 TO 1 STEP -1 N2 = N2 + Mb(j) * P: P = P * 10 NEXT j IF N2 = N1 THEN PRINT "ЭТО ЧИСЛО - ПАЛИНДРОМ" ELSE PRINT N1; "ЭТО ЧИСЛО - НЕ ПАЛИНДРОМ" END IF END |
DEFLNG I-N DEFSTR S DIM mb(10000) AS LONG CLS INPUT "Задайте натуральное число"; s s1 = s FOR i = 1 TO LEN(s) / 2 'перевернули строку sw = MID$(s1, i, 1) MID$(s1, i, 1) = MID$(s1, LEN(s) - i + 1) MID$(s1, LEN(s) - i + 1) = sw NEXT i IF s = s1 THEN PRINT "ЭТО ЧИСЛО - ПАЛИНДРОМ" ELSE PRINT "ЭТО ЧИСЛО - НЕ ПАЛИНДРОМ" END IF END |
PASCAL
Способ 1 |
Способ 2 |
program ZADANIE2; uses crt; var N,N1,N2: longint; Mb: array [0..10000] of integer; i,j,p: integer; begin clrscr; Write('Задайте натуральное число'); Readln(N); N1:=N; i:=1; repeat Mb[i]:=N mod 10; N:=N div 10; i:=i+1 until N<=0; N2:=0;p:=1; for j:= i-1 downto 1 do begin N2:=N2+Mb[j]*p; p:=p*10 end; if N2=N1 then Writeln('Это число-палиндром') else Writeln('Это число-НЕ палиндром'); Readln end. |
program ZADANIE2; uses crt; var s,s1: string; sw:char; i: integer; begin Clrscr; Write('Задайте натуральное число'); Readln(s); s1:=s; for i:=1 to Length(s) div 2 do begin sw:=s[i]; s[i]:=s[length(s)-i+1]; s[length(s)-i+1]:=sw end; if s=s1 then Writeln('Это число-палиндром') else Writeln('Это число-НЕ палиндром'); Readln end. |