While15. Начальный вклад в банке равен 1000 руб. В конце каждого месяца размер вклада увеличивается на P процентов от имеющейся суммы (P — вещественное число, 0 < P < 25). По данному P определить, через сколько месяцев размер вклада превысит 1100 руб., и вывести найденное количество месяцев K (целое число) и итоговый размер вклада S (вещественное число).
Допустим, мы поставили в банк 1000 рублей под 5% месячных. Тогда за первый месяц наша сумма увеличится на 5·1000/100 = 50 (рублей), и в конце месяца мы будем иметь 1000+50=1050 (рублей). В следующем месяце последняя сумма денег увеличится тоже на 5%, то есть на 5·1050/100 = 52,5 (рублей), и в конце месяца итоговая сумма составит 1050+52,5 = 1102,5 (рублей).
Таким образом, уже через 2 месяца при процентной ставке 5% размер вклада превысит 1100 рублей. Это только пример, как решается задача в общем случае, смотрите ниже с комментариями.
var
K: word;
S, P: real;
begin
write('P = ');
readln(P); { <-- Вводим проценты }
K := 0; { <== Начальное количество месяцев }
S := 1000; { <== Начальная сумма денег }
{ Выполняем цикл до тех пор, пока количество
денег на счету не превосходит 1100 рублей: }
while S <= 1100 do
begin
{ Увеличиваем прежнюю сумму на число денег,
выросшее за последний месяц: }
S := S + S * P / 100;
inc(K) { <== Увеличиваем месяц на 1 }
end;
writeln;
writeln(' количество месяцев: ', K);
writeln(' итоговый размер вклада: ', S:0:2);
readln
end.
**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1 С использованием repeat - until:
var
K: word; { Месяцы }
S, P: real; { S - сумма денег, P - проценты }
begin
writeln('Введите количество процентов (0 < P < 25):');
write(' P = ');
readln(P); { <-- Вводим проценты }
K := 0; { <== Начальное количество месяцев }
S := 1000; { <== Начальный размер вклада }
{ Вычисления производим в цикле с ПОСЛЕУСЛОВИЕМ, то есть
сначала делаем вычисления, а потом проверяем требуемое
нам условие (S>1100) на истинность: }
repeat
inc(K); { <== Увеличиваем месяц на 1 }
{ Увеличиваем сумму S денег за предыдущий месяц на
число денег, выросшее по процентам (S·P/100): }
S := S + S * P / 100
until S > 1100; { <-- Выходим из цикла после того, как
количество денег на счету превзойдет 1100 рублей }
writeln;
writeln(' Количество месяцев: ', K);
writeln(' Итоговый размер вклада: ', S:0:2);
readln
end.
**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1 While16. Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину пробега на P процентов от пробега предыдущего дня (P — вещественное, 0 < P < 50). По данному P определить, после какого дня суммарный пробег лыжника за все дни превысит 200 км, и вывести найденное количество дней K (целое) и суммарный пробег S (вещественное число).
var
K: word;
P, S, L: real;
begin
writeln('Введите количество процентов (0 < P < 50):');
write(' P = ');
readln(P); { <-- Вводим проценты }
K := 1; { <== Первый день }
L := 10; { <== Длина пробега за 1-й день }
S := 10; { <== Начальная общая длина пробега }
{ Выполняем цикл до тех пор, пока общая длина
пробега не превосходит 200км: }
while S <= 200 do
begin
inc(K); { <== Увеличиваем день на 1 }
{ Увеличиваем длину пробега за предыдущий
день на длину, выросшую за последний день: }
L := L + L * P / 100;
{ Увеличиваем общую длину пробега на длину,
выросшую за последний день: }
S := S + L
end;
writeln;
writeln(' Количество дней: ', K);
writeln(' Суммарный пробег: ', S:0:3);
readln
end.
**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1 С использованием repeat - until:
var
K: word;
S, P, L: real;
begin
write('P = ');
readln(P);
K := 1; { <== Первый день }
L := 10; { <== Пробег за 1-й день }
S := 10; { <== Общая длина пробега }
repeat
inc(K); { <== Увеличиваем день на 1 }
L := L + L * P / 100; { <== Пробег за K-й день }
S := S + L { <== Пробег за первые K дней }
until S > 200; { <-- Выходим из цикла, если общая
длина пробега превзойдет 200км }
writeln;
writeln(' Количество дней: ', K);
writeln(' Суммарный пробег: ', S:0:3);
readln
end.
**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1 Ещё прочитать о процентах вы можете на странице Проценты в банке.