Здравствуйте Решал информатику и у меня возникла проблема в решении задачи (Найдите и выведите все двузначные числа,которые равны удвоенному произведению своих цифр.) Не моглибы вы мне помочь с ней или указать где я ошибся? Заранее благодарен.
var a.b.c:integer;
begin
a:=1;
b:=9;
c:=a*10+b;
while c<>100 do
begin
b:=b+1;
of c=2*(a+b) then writeln(c);
if b=9 then a:=a+1;
end;
readln;
end.
var a.b.c:integer;
begin
a:=1;
b:=9;
c:=a*10+b;
while c<>100 do
begin
b:=b+1;
of c=2*(a+b) then writeln(c);
if b=9 then a:=a+1;
end;
readln;
end.
Напишите, что неправильно выводит.
Чему равно первое с, которое попадает в цикл?
У Вас переменная с получается константой, равной 19 =)
Ваша программа проверит равно ли 19 2*(a+b) и всё....
Странный вопрос.
Как вы писали программу? Расскажите логику. Почему такая первая строчка, почему вторая, почему третья именно такая?
Для этого задания Вам хватит одной переменной.
Алгоритм:
1) Присваиваите начальное значение N := 9;
2) Создаёте цикл для N, не превышающего 100 (т.е. оставляете while);
3) Тело цикла:
N := N + 1;
If N = 2*(N mod 10 + N div 10) then writeln(N);
4) Конец цикла, конец программы.
просто не то делает.
Это и есть ошибка, только семантическая, а не синтаксическая.
Расскажите логику. Почему такая первая строчка, почему вторая, почему третья именно такая? Тогда мы найдем ошибку в рассуждениях.
Ну, чем вы руководствовались, когда писали именно b:=9;, например?
Правда выводит почемуто всего 1 число я потом проверю) када время буит.=)
Прога терь так выглядит
var n:integer;
begin
n:=9;
while n<>100 do
begin
n:=n+1;
If n = 2*(n mod 10 + n div 10) then writeln(n);
end;
readln;
end.
Пашет) выводит число 18(:Спасибо еще раз удачи!