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

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

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

Ответить
convergence
незнакомец
Сообщения: 1
Зарегистрирован: 03.05.2017 12:20:04

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

Сообщение 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.
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Ошибка в: i:=b-1;
b постоянно, потому i тоже постоянно и равно всегда 7.
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение 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.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

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

Замените:

Код: Выделить всё

until (i<=0);

на

Код: Выделить всё

until (i>0); 


Либо замените:

Код: Выделить всё

i:=b-1; 

на

Код: Выделить всё

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