Посчитать количество чисел палиндромов из последовательности чисел - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Вводится последовательность из N положительных целых элементов. Посчитать количество чисел палиндромов. Для определения палиндрома создать функцию. А теперь сам вопрос: Программа рабочая, но не совсем корректно работает. При написании числа, допустим 123421, он его считает за палиндром. Т.е. ошибка в последнем прохождении цикла на строке 17. Но вроде всё правильно. Помогите!
program project1;
function palindrom(x:longint):boolean;
var y,j:longint;
    k,i:byte;
begin
  palindrom:=false;  // Пусть palindrom:=false
   j:=1;
   k:=0;
   y:=abs(x);
     while y>0 do    // Подсчет кол-ва цифр в числе
       begin
         k:=k+1;
         y:=y div 10;
       end;
     for i:=1 to k-1 do    //Разрядность числа (пригодится в дальнейшем)
       j:=j*10;
     for i:=1 to k div 2 do
       begin
         if x mod 10 = x div j then  //Сравнивает 1-ую и последнюю цифры
           begin                  // И если они равны, то
             palindrom:=true;     // Присваиваем фунцкии значение true
             x:=x-(x div j)*j;    // Убираем 1-ую цифру
             x:=x div 10;         // Убираем последнюю цифру
             j:=j div 100;        // Уменьшаем разрядность на 100
           end
         else           // иначе выходим из цикла
           break;
       end;
end;
var x:longint;
    n,kp,i:byte;
begin
  write('N = ');     //Количество элементов последовательности
  readln(n);
   kp:=0;            //Количество палиндромов
     for i:=1 to N do
       begin
         write('x = ');
         readln(x);
           if x>0 then    //Если число положительное, то
             begin
               if palindrom(x) then   //Использование функции
                 kp:=kp+1;       //Подсчет чисел палиндромов
             end
           else               //Иначе сообщение об ошибке
             writeln('Error');
       end;
     writeln('Kol-vo palindromov = ',kp);   //Вывод
     readln;
end.

Решение задачи: «Посчитать количество чисел палиндромов из последовательности чисел»

textual
Листинг программы
program project1;
function Palindrom(n:longint):boolean;
var m,p:longint;
    i,k:integer;
begin
m:=n;
p:=0;
while m>0 do
 begin
  i:=m mod 10;
  p:=p*10+i;
  m:=m div 10;
 end;
Palindrom:=p=n;
end;
 
var x:longint;
    n,kp,i:byte;
begin
write('N = ');     //Количество элементов последовательности
readln(n);
writeln('Введите ',n,' целых положительных чисел');
kp:=0;            //Количество палиндромов
for i:=1 to N do
 begin
  repeat
   write('x',i,'=');
   readln(x);
  until x>0;
  if palindrom(x) then   //Использование функции
  kp:=kp+1;       //Подсчет чисел палиндромов
 end;
writeln('Kol-vo palindromov = ',kp);   //Вывод
readln;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы