Помощь новичку

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Помощь новичку

Сообщение convergence » 03.05.2017 13:44:03

Здравствуйте форумчане! Буквально неделю назад начал изучать Паскаль. Дошёл до задачи 7.12 и не смог ее решить. Вот она: Введите два числа (например, А=5 и B=8) и найдите их произведение, используя только операцию сложения и цикл с постусловием. Помогите понять логику, почему программа не работает.

Код: Выделить всё
program pr1;
var
a,b,i: integer;
begin
a:=5;
b:=8;
i:=0;
{write('Введите первый множитель: ');
readln(a);
write('Введите второй множитель: ');
readln(b);}
repeat
a:=a+b; {По идее цикл должен в любом случае выполниться один раз и после этого переменная а должна принять значение 13 и далее к ней снова должно прибавиться значение переменной b, то есть 8 и.т.д. }
i:=b-1; { Здесь происходит цикличное вычитание из значения переменной b = 8, единицы до тех пор пока значение i станет равным 0 после чего цикл должен остановиться но этого почему то не происходит}
until (i<=0);
writeln('Произведение чисел:', a);
readln
end.
convergence
незнакомец
 
Сообщения: 1
Зарегистрирован: 03.05.2017 13:20:04

Re: Помощь новичку

Сообщение sign » 04.05.2017 07:09:32

Ошибка в: i:=b-1;
b постоянно, потому i тоже постоянно и равно всегда 7.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Помощь новичку

Сообщение olegy123 » 04.05.2017 07:52:37

Код: Выделить всё
program pr1;
var
a,b,i: integer;
begin
a:=5; //1-множитель
b:=8; //2-множитель, оно же количество повторов а+a+a..
i:=0; // сумма
repeat
i:=a+i; // суммируем
b:=b-1; // уменьшаем счетчик
until (b<=0); // если счетчик меньше или равно нулю выходим
writeln('Произведение чисел:', i);
readln;
end.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Помощь новичку

Сообщение vitaly_l » 04.05.2017 09:04:42

convergence писал(а):until (i<=0);

Замените:
Код: Выделить всё
until (i<=0);

на
Код: Выделить всё
until (i>0);


Либо замените:
Код: Выделить всё
i:=b-1;

на
Код: Выделить всё
i:=i-1; // либо декремент на 1, можно задать так: dec(i);
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru