Посчитать количество чисел палиндромов из последовательности чисел - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д