
Задача «Банк». Посчитать итоговую сумму денег на банковском вкладе за N лет при P процентах годовых.
Решение
Program bank2;
CONST P=15; N=5;
VAR S:real; i: integer;
BEGIN
Writeln (‘Summa vklada: ’);
Readln (S);
i:=1;
While i<=N do
begin
S:=S+S*P/100;
i:=i+1;
end;
Writeln (‘itogovaja summa’, S);
END.
Program bank3;
CONST P=15; N=5;
VAR S:real; i: integer;
BEGIN
Writeln (‘Summa vklada: ’);
Readln (S);
i:=1;
Repeat
S:=S+S*P/100;
i:=i+1;
Until i>N;
Writeln (‘itogovaja summa’, S);
END.
Задача «Евклид» (алгоритм нахождения наибольшего общего делителя).
Условие: Если n=m, то НОД (n, m) = n = m
Если n>m, то НОД (n, m) = НОД (n-m, m)
Если n<m, то НОД (n, m) = НОД (n, m-n)
Решение:
Program evklid3;
VAR n,m : integer;
BEGIN
Readln (n, m);
If n<>m then
Repeat
If n>m then n:=n-m
else m:=m-n;
Until n=m;
Writeln (‘НОД = ’, n)
END.
Эту задачу нельзя решить с помощью цикла со счетчиком. Применение цикла с постусловием требует изначально сравнения введенных чисел, таким образом цикл вложен в условный оператор. Решение этой задачи с помощью цикла с предусловием кажется наиболее красивым.
Составить программу для вычисления S. Задачу решить тремя способами (с использованием трех типов оператора цикла).
1. Вычислить:
S:=xn/n!+xn-1/(n-1)!+...+x1/1!
Известные величины: n,x
Решение
var s:real;
x,i,n,j,Fact,Stepen:integer;
begin
write('Input n=');
readln(n);
write('Input x=');
readln(x);
S:=0;
i:=n;
while i>0 do begin
j:=1;
Fact:=1;
Stepen:=1;
while j<=i do begin
Fact:=Fact*j;
Stepen:=Stepen*x;
j:=j+1;
end;
s:=s+stepen/fact;
i:=i-1;
end;
writeln(s:4:2);
readln;
end.
var s:real;
i,n,j,x,stepen,fact:integer;
begin
write('Input n=');
readln(n);
write('Input x=');
readln(x);
S:=0;
i:=n;
repeat
j:=1;
stepen:=1;
fact:=1;
repeat
fact:=fact*j;
stepen:=stepen*x;
j:=j+1
until j>i;
s:=s+stepen/fact;
i:=i-1;
until i=0;
writeln(s:4:2);
readln;
end.
Найти сумму квадратов всех натуральных чисел от 1 до 100. Решим эту задачу с использованием всех трех видов циклов.
II. С использованием цикла "До".
Program Ex2;
Var
A : Integer;
S : Longint;
Begin
A:=1; S:=0;
Repeat
S:=S+A*A;
A:=A+1
Until A>100;
Writeln(S)
End.
III. С использованием цикла "С параметром".
Program Ex3;
Var
A : Integer;
S : Longint;
Begin
S:=0;
For A:=1 To 100 Do S:=S+A*A;
Writeln(S)
End.