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

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

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

Вводится последовательность из N положительных целых элементов. Посчитать количество чисел палиндромов. Для определения палиндрома создать функцию. А теперь сам вопрос: Программа рабочая, но не совсем корректно работает. При написании числа, допустим 123421, он его считает за палиндром. Т.е. ошибка в последнем прохождении цикла на строке 17. Но вроде всё правильно. Помогите!
Листинг программы
  1. program project1;
  2. function palindrom(x:longint):boolean;
  3. var y,j:longint;
  4. k,i:byte;
  5. begin
  6. palindrom:=false; // Пусть palindrom:=false
  7. j:=1;
  8. k:=0;
  9. y:=abs(x);
  10. while y>0 do // Подсчет кол-ва цифр в числе
  11. begin
  12. k:=k+1;
  13. y:=y div 10;
  14. end;
  15. for i:=1 to k-1 do //Разрядность числа (пригодится в дальнейшем)
  16. j:=j*10;
  17. for i:=1 to k div 2 do
  18. begin
  19. if x mod 10 = x div j then //Сравнивает 1-ую и последнюю цифры
  20. begin // И если они равны, то
  21. palindrom:=true; // Присваиваем фунцкии значение true
  22. x:=x-(x div j)*j; // Убираем 1-ую цифру
  23. x:=x div 10; // Убираем последнюю цифру
  24. j:=j div 100; // Уменьшаем разрядность на 100
  25. end
  26. else // иначе выходим из цикла
  27. break;
  28. end;
  29. end;
  30. var x:longint;
  31. n,kp,i:byte;
  32. begin
  33. write('N = '); //Количество элементов последовательности
  34. readln(n);
  35. kp:=0; //Количество палиндромов
  36. for i:=1 to N do
  37. begin
  38. write('x = ');
  39. readln(x);
  40. if x>0 then //Если число положительное, то
  41. begin
  42. if palindrom(x) then //Использование функции
  43. kp:=kp+1; //Подсчет чисел палиндромов
  44. end
  45. else //Иначе сообщение об ошибке
  46. writeln('Error');
  47. end;
  48. writeln('Kol-vo palindromov = ',kp); //Вывод
  49. readln;
  50. end.

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

textual
Листинг программы
  1. program project1;
  2. function Palindrom(n:longint):boolean;
  3. var m,p:longint;
  4.     i,k:integer;
  5. begin
  6. m:=n;
  7. p:=0;
  8. while m>0 do
  9.  begin
  10.   i:=m mod 10;
  11.   p:=p*10+i;
  12.   m:=m div 10;
  13.  end;
  14. Palindrom:=p=n;
  15. end;
  16.  
  17. var x:longint;
  18.     n,kp,i:byte;
  19. begin
  20. write('N = ');     //Количество элементов последовательности
  21. readln(n);
  22. writeln('Введите ',n,' целых положительных чисел');
  23. kp:=0;            //Количество палиндромов
  24. for i:=1 to N do
  25.  begin
  26.   repeat
  27.    write('x',i,'=');
  28.    readln(x);
  29.   until x>0;
  30.   if palindrom(x) then   //Использование функции
  31.   kp:=kp+1;       //Подсчет чисел палиндромов
  32.  end;
  33. writeln('Kol-vo palindromov = ',kp);   //Вывод
  34. readln;
  35. end.

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


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

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

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы