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