Другие языки программирования и технологии

Помогите с очень простой задачей в Paskal. Срочно (завтра сдавать)

Найти первые m более чем 2-разрядных чисел-палиндромов, то есть чисел, десятичная запись которых читается одинаково в прямом и обратном направлениях, например: 373; 426624
если надо очень быстро предлагаю следующий вариант, берём числа попорядку от 100 до 1000 к примеру, каждое число переводим в строку, и проверяем строку на палиндром это легче сделать чем разбирать слово. ниже вариант с пояснениями, до 1000 сделал как вариант, чтобы можно было проверить вывод, если хочешь чтобы проверило все целые числа для твоего компа раскоментируй первую строку
{a := maxlongint;} // раскоментируй и будет счастье
но закоментируй вторую a := 1000; // а эту строку закоментируй

придётся довольно долго подождать.

program chislo_palindrom;

var
i : longint;
s, s1 : string;
a : longint;
i1 : integer;
begin
{a := maxlongint;} // раскоментируй и будет счастье
a := 1000; // а эту строку закоментируй

writeln('Для этой машины максимальное целое число = ', a);
writeln('Выведем цифры палиндромы от 100 до ', a);
i := 100;
writeln('Чтобы начать нажми enter');
readln;
repeat
s := ''; s1 := '';
str(i, s); // преобразовываем число в строку
for i1 := length(s) downto 1 do // переворачиваем строку, если совпадёт с первоначальной
begin // то число палиндром
s1 := s1 + s[i1];
end;

if s = s1 then write(s, ' ');
i := i + 1;
until i = a;

readln;
end.

Удачи.
Геннадий Неверов
Геннадий Неверов
1 683
Лучший ответ
//счетчик числе не устанавливал

var
i, r, n, b, j : integer;
function reverse(i: integer; var base: integer): integer;
var
r: integer;
begin
r:=0;
base := 1;

repeat
r:=r*10 + (i mod 10);
base := base * 10;
i := i div 10;
until i = 0;
reverse := r;
end;

begin
writeln('_________________________________________');
for i := 1 to 100 do
begin
r := reverse(i, b);
n := i*b + r;
write(n, ' ');
for j:= 0 to 9 do
begin
n := (i*10+j)*b + r;
write(n, ' ');
end;
end;
writeln;writeln('_________________________________________');
end.