23:23

Здравствуйте Решал информатику и у меня возникла проблема в решении задачи (Найдите и выведите все двузначные числа,которые равны удвоенному произведению своих цифр.) Не моглибы вы мне помочь с ней или указать где я ошибся? Заранее благодарен.
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.

@темы: Pascal

Комментарии
20.04.2009 в 23:29

А пошаговую отладку в компиляторах уже отменили?

Напишите, что неправильно выводит.
Чему равно первое с, которое попадает в цикл?
20.04.2009 в 23:44

Для кого даже честь - пустяк, для того и все прочее ничтожно.
metru
У Вас переменная с получается константой, равной 19 =)
Ваша программа проверит равно ли 19 2*(a+b) и всё....
20.04.2009 в 23:49

А не могли бы вы мне подсказать как можно исправить просто когда c попадает в цикл..блин я понял ток не знаю как исправить(
20.04.2009 в 23:50

metru

Странный вопрос.
Как вы писали программу? Расскажите логику. Почему такая первая строчка, почему вторая, почему третья именно такая?
20.04.2009 в 23:51

Trotil Так ничего не выводит просто по экрану ползет матрица бесконечная состоящая из 1 и 0. а ошибок нет в проге просто не то делает.
20.04.2009 в 23:52

Trotil Всмысле как я писал программу? Ну просто логически думал как должно быть и писал,как обычно)
20.04.2009 в 23:53

Для кого даже честь - пустяк, для того и все прочее ничтожно.
metru
Для этого задания Вам хватит одной переменной.
Алгоритм:
1) Присваиваите начальное значение N := 9;
2) Создаёте цикл для N, не превышающего 100 (т.е. оставляете while);
3) Тело цикла:
N := N + 1;
If N = 2*(N mod 10 + N div 10) then writeln(N);
4) Конец цикла, конец программы.
20.04.2009 в 23:53

ошибок нет

просто не то делает.

Это и есть ошибка, только семантическая, а не синтаксическая.

Расскажите логику. Почему такая первая строчка, почему вторая, почему третья именно такая? Тогда мы найдем ошибку в рассуждениях.
20.04.2009 в 23:54

Ну просто логически думал как должно быть и писал,как обычно)

Ну, чем вы руководствовались, когда писали именно b:=9;, например?
20.04.2009 в 23:55

А щас попробую объяснить ну изначально а присвоил 1 т.к. а это десятки потом б почемуто изначально присвоил 0 чтоб получилось 1=е двухзначное число(10). так как с=а*10+б=10+0.Верно?После чего Ввел условие пока с не равно 100 делать ии попробывал сделать цикл сравнения с с удвоенным произведением суммы цифр. видимо у меня в нем ошибка.
20.04.2009 в 23:56

Le_Taon Все я понял щас напишу с 1-ой переменной.2 мин)
21.04.2009 в 00:04

Всем огромное спасибо!=) Вроде написал
Правда выводит почемуто всего 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(:Спасибо еще раз удачи!