Программа написана, однако перебором всех чисел от 1 до N. А так нельзя. Нужно необходимо вывести их... При этом нельзя использовать функции и массивы.
Я была бы рада увидеть написанную программу (на си), однако возможный принцип работы программы тоже подойдет.
Так, например, если начинать воссоздавать числа по высшему разряду в числе, то будет цепочка: 1 -- 11 -- 101 -- 111...191 -- 1001 и так далее. А как перейти, например, от 11 к 101 я уже не вдупляю.
Если идти "напролом" и выписывать все числа подряд: 1 -- 2 -- 3...9 -- 11 -- 22...99 -- 101 -- 111 и т. д., то непонятно, опять, как переходить от 99 к 101.
Другие языки программирования и технологии
Вывести все числа от 1 до N, являющиеся палидромами
Решение палидромов на 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.
вот прямая ссылка на скачивание файла "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.
что за язык программирования-то?
самое простое: рекурсивно пробежаться по левым частям:
1
10
100
...
11
110
...
достраивая симметрично правые и проверяя, не вышли ли за N
самое простое: рекурсивно пробежаться по левым частям:
1
10
100
...
11
110
...
достраивая симметрично правые и проверяя, не вышли ли за N
вот программа палиндрома
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.
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.
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.
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.
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;
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
Прошу прощения, я тормоз, минуту
Похожие вопросы
- дано целое число n,вывести все числа от 1 до n,и кол во этих чисел
- Вам даны все целые числа от 1 до N + 1, кроме одного. Найдите отсутствующее число.
- Найти сумму квадратов всех чисел от 1 до n .
- <<ПОМОГИТЕ! НАПИСАТЬ ПРОГРАММУ НА СИ ИЛИ ПАСКАЛЕ КОТОРАЯ ВЫВОДИТЬ СУММУ ЦИФР ЧИСЛА ОТ 1 ДО N
- Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n -1, у которых произведение всех цифр совпадает
- Решите задачу! Дано целое число n найдите сумму 1^n +2^n-1 + 3^n-2 ...+n^1
- Определить число k, которое отсутствует в неупорядоченном массиве чисел (0, 1,...k-1,k+1,...n) за один цикл
- Помогите!! C ++ Вводится число от 1...999. Вывести данное число на естественном языке. Например, 52 – пятьдесят два.
- Даны действительные числа а (1),а (2),...а (2n). Получить: а (1),а (2n),а (2),а (2n-1),а (3),...а (n),а (n+1).
- C++, какой смысл приписывать к числам букву L? (long N(0L), N % 2L) Чем грозит неприписывание? Особенн в Visual studio.