Мислим да програм пријављује грешку зато што је пробијен бафер (нисам компајлирао).
Као што је речено, петља ти се врти док је n веће од нуле, па кад n падне на нулу и ток програма изађе из петље, уопште не може то n бити једнако неком ненултом броју n1.
Пробај да сама прођеш кроз петљу (на оловку) и видећеш да је вредност n1 на крају једнака оној вредности n која је на почетку унета, ако је број палиндром. Само та променљива n је током извршавања петље променила вредност, па програм не препознаје палиндром.
Уз то унети број 12345654321 је већи од 2147483647 (највећи број који може да прими четворобајтни longint) - па је пробијен бафер.
И мали предлог, изгледа читљивије ако се изворни код копира, или бар сними само активни прозор (Alt + Print Screen).
P.S.
Скинуо сам Lazarus, па сам проверио.
program project1;
var n1, n, nUneto: longint;
begin
read(n);
nUneto:=n;
n1:=0;
while n>0 do
begin
n1 := n1*10 + n mod 10;
n := n div 10;
end;
writeln(n1);
if n1 = nUneto then writeln('Palindrom');
end.
|