Задача 2.  Определить, является ли натуральное число палиндромом

Далее  Назад  Список В начало

Алгоритм 1 

Алгоритм 2

Программы

Предлагается два подхода к решению задачи, в зависимости от типа входных данных:
  •  С клавиатуры задаётся значение переменной натурального типа N
  • Вводится значение символической переменной S
Сообщение о результате выводится на экран

Алгоритмы

Алгоритм 1

Промежуточные данные:

В качестве счётчиков цикла используются переменные i, j

Р - разряд очередной цифры числа,  N1 - хранит исходное число  

Цифры числа N заносятся в массив Mb, затем переставляются в обратном порядке.

Формируется новое число N2, которое используется для сравнения с исходным

Алгоритм 2

Промежуточные данные: 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.

Условие задачи     Алгоритмы

Далее  Назад  Список В начало