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

Вывести все числа от 1 до N, являющиеся палидромами

Программа написана, однако перебором всех чисел от 1 до N. А так нельзя. Нужно необходимо вывести их... При этом нельзя использовать функции и массивы.
Я была бы рада увидеть написанную программу (на си), однако возможный принцип работы программы тоже подойдет.
Так, например, если начинать воссоздавать числа по высшему разряду в числе, то будет цепочка: 1 -- 11 -- 101 -- 111...191 -- 1001 и так далее. А как перейти, например, от 11 к 101 я уже не вдупляю.
Если идти "напролом" и выписывать все числа подряд: 1 -- 2 -- 3...9 -- 11 -- 22...99 -- 101 -- 111 и т. д., то непонятно, опять, как переходить от 99 к 101.
Aleksandr Belenkov
Aleksandr Belenkov
237
Решение палидромов на Turbo Pascal 7.0 (соблюдаются все твои условия задачи и пожелания преподавателя: ни функций, ни массивов). На Си перевести не хватило что-то знаний.
вот прямая ссылка на скачивание файла "my-files.ru/b9qodk"

uses crt;
var i, j, g, m, n, n1, n2, kolvo_pal, kol_simbol: Longint;
jp: boolean;
begin
clrscr;
kolvo_pal:=0;
writeln (' Введите число 1 <= N <= 2000000000:');
write (' для N = ');
readln (n1);
if n1=0 then exit;
writeln (' палидромы:');
n:=n1;
if n1<10 then for i:= 1 to n1 do
begin
kolvo_pal:=n1-9;
write (i: 8);
end
else
begin
for i:=1 to 9 do write (i: 8);
for n:=10 to n1 do
begin
n2:=n;
kol_simbol:=0;
while n2>0 do
begin
inc(kol_simbol);
n2:=n2 div 10;
end;
n2:=n;
jp:=false;
for j:=1 to trunc(kol_simbol/2) do
begin
m:=1;
for g:=1 to kol_simbol-1 do
m:=m*10;
if (n div m) = (n mod 10) then
begin
n:= (n - (n div m)*m - (n mod 10)) div 10;
kol_simbol:=kol_simbol-2;
jp:=true
end
else jp:=false;
end;
n:=n2;
if jp then
begin
write (n: 8);
kolvo_pal:=kolvo_pal+1;
end;
end;
end;
writeln;
writeln (' Кол-во палидромов = ', kolvo_pal+9:5);
readln;
end.
ЕШ
Евгений Шумилин
24 309
Лучший ответ
что за язык программирования-то?
самое простое: рекурсивно пробежаться по левым частям:
1
10
100
...
11
110
...
достраивая симметрично правые и проверяя, не вышли ли за N
Vadim Liberman
Vadim Liberman
24 825
вот программа палиндрома
program programm;
uses crt;
var n, m, a, i: integer;
begin
clrscr;
writeln('vvedite n<=9999');
readln(n);
m:=n; a:=0;
for i:=1 to 4 do
begin
a:=a*10+ m mod 10; m:= m div 10;
end;
if a=n
then writeln('DA!')
else writeln('NO');
readln;
end.
Александр Маркин «Кот ученый!» - который тебе написал, это бывший ник «Романа Максимова» - https://otvet.mail.ru/profile/id233762341/answers/all/ - вчера еще был "Зотиков", который тебе ответил: https://otvet.mail.ru/profile/id14126244/ - ВОТ ЕГО ПОЧТА: ggzot@mail.ru или 19.40@mail.ru или rom.chik45@mail.ru, который тебе ответил, будет у тебя деньги выпрашивать за решения– кидает тут всех тупо на бабки! ныкается как крыса под разными именами)) Сидит на даче безработный старпёр С НЕМЫТЫМИ САЛЬНЫМИ ВОЛОСАМИ и кидает студентов!!! Моего друга кинул на 320 руб – денег не вернул!!! У этого мошенника Зотикова-Леоновой – есть еще страницы http://otvet.mail.ru/profile/id85810161/answers/all/ и https://otvet.mail.ru/profile/id233013994/answers/all/ - ИХ УЖЕ ЗАБЛОКИРОВАЛИ ЗА МОШЕННИЧЕСТВО - он с трёх страниц кидает
program chisla;
uses crt;
var a,b,i:integer;

Function preo(x:integer):integer;
var
st,st1:string;
j:integer;
begin
Str(x, St);
For j:=1 to length(st) do
begin
st1:=st1+copy(st,(Length(st)),1);
delete(st,(Length(st)),1);
end;
preo:=StrToInt(st1);
st:='';
st1:='';
end;

begin
writeln;
readln(a);
writeln();

for i:=1 to a do
if i = preo(i) then
writeln(i);
end.
VD
Veaceslav Danilov
1 075
Veaceslav Danilov Вариант #2
program chisla;
Var x,y, s :integer;
x1, a,b,c,d:integer;
begin
writeln('Палиндромы, являющиеся простыми числами: ');
for x:=1000 to 9999 do
begin
d:=x mod 10;
c:=x div 10 mod 10;
b:=x div 100 mod 10;
a:=x div 1000;
if (a=d) and (b=c) then
begin
s:=0;
for y:=1 to x do
if x mod y = 0 then s:=s+1;
if s=2 then writeln(x);
end;
end;
end.
Veaceslav Danilov Подсказка:
for i:=1 to 9 do
for j:=0 to 9 do
begin
x := i*1000+j*100+j*10+i;
{проверить число x простое ли и если да, то вывод}
end;
Aleksandr Belenkov Объясните, пожалуйста, как программа работает, на чем она зиждется. А то ни объяснения, ни комментариев... Еще и паскаль придется изучать.
Aleksandr Belenkov Прошу прощения, я тормоз, минуту

Похожие вопросы