Страница 1 из 1

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

СообщениеДобавлено: 03.05.2017 13:44:03
convergence
Здравствуйте форумчане! Буквально неделю назад начал изучать Паскаль. Дошёл до задачи 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.

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

СообщениеДобавлено: 04.05.2017 07:09:32
sign
Ошибка в: i:=b-1;
b постоянно, потому i тоже постоянно и равно всегда 7.

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

СообщениеДобавлено: 04.05.2017 07:52:37
olegy123
Код: Выделить всё
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.

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

СообщениеДобавлено: 04.05.2017 09:04:42
vitaly_l
convergence писал(а):until (i<=0);

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

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


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

на
Код: Выделить всё
i:=i-1; // либо декремент на 1, можно задать так: dec(i);