Uses crt;var c,i,j,n:integer;a:array [1..1000] of integer;begin clrscr;read(n);for i:=1 to n doread(a[i]);for i:=1 to n dofor j:=1 to n-1 doif (a[j] mod 10) > (a[j+1] mod 10) then beginc:=a[j];a[j]:=a[j+1];a[j+1]:=cend;for i:=1 to n dowrite(a[i],' ')<span>end.</span>
Var
i: integer;
d, s: real;
begin
d := 10;
s := d;
for i := 2 to 7 do
begin
d := d * 1.1;
s := s + d;
end;
writeln(s);
end.
Блок-схему не умею. Но эта программа хоть работает и правильно
<u><em>Задание 2.</em></u>
// PascalABC.Net 3.0, сборка 1064
function f(x,z:double):double;
begin
if (x>z) and (z>1) then Result:=(x-z)/(z-1)
else
if (x<=0) and (z<0) then Result:=2*x*z
else Result:=x+1
end;
<u><em>Задание 3.</em></u>
// PascalABC.Net 3.0, сборка 1064
var
a,b,c:real;
begin
Write('Введите длины сторон треугольника: '); Read(a,b,c);
if (a+b>c) and (a+c>b) and (b+c>a) then begin
if (a=b) and (a=c) then
Writeln('Треугольник равносторонний, площадь ',a*a/4*sqrt(3))
else
if (a=b) or (a=c) or (b=c) then
Writeln('Треугольник равнобедренный, периметр ',a+b+c)
else
Write('Треугольник разносторонний, самая короткая сторона ',
min(a,min(b,c)))
end
end.
<u><em>Тестовые решения:</em></u>
Введите длины сторон треугольника: 5 3.7 6
Треугольник разносторонний, самая короткая сторона 3.7
Введите длины сторон треугольника: 4 6 4
Треугольник равнобедренный, периметр 14
Введите длины сторон треугольника: 5 5 5
Треугольник равносторонний, площадь 10.8253175473055
<u>1) Решение методом рекурсии.</u>
<u>Программа проста в понимании, но неэффективна при больших значениях
</u>var
n: integer;
function f(i: integer): longint;
begin
if i < 2 then
f := 1
else
f := f(i - 1) + f(i - 2);
end;
begin
read(n);
writeln(f(n));
end.
<u>2) Решение методом динамического программирования. Намного быстрее метода с рекурсией.</u><u></u>
var
i, n: integer;
f: array[0..50] of longint;
begin
read(n);
f[0] := 1;
f[1] := 1;
for i := 2 to n do
f[i] := f[i - 1] + f[i - 2];
writeln(f[n]);
end.
<u>3) Решение методом моделирования. Использует меньше памяти.
</u>var
n, a, b, i: integer;
begin
read(n);
if n < 2 then
a := 1
else
begin
a := 0;
b := 1;
for i := 0 to n do
begin
b := a + b;
a := b - a;
end;
end;
writeln(a);
end.