Const
handsfree = false;
var
a: array[1..100] of real;
i, n: integer;
sum, product, harmonic: real;
begin
{ввод массива}
if handsfree then
n := random(20) + 5
else begin
write('n = ');
readln(n);
end;
writeln('Данные массива:');
for i := 1 to n do
begin
if handsfree then begin
a[i] := random(100) - 50;
write(a[i], ' ');
end
else readln(a[i]);
end;
writeln();
{подсчет суммы и произведения и агригатов}
sum := 0;
for i := 1 to n do
if abs(a[i]) <= 5 then
sum := sum + a[i];
writeln('sum = ', sum);
end.
Такую надо состовлять самому!А вот простой алгоритм для аких случаев по этой проге вроде-
program jfe3;
const n=10; {Это будет кол-во элементов массива}
var a:array [1..n] of integer; i,s:integer;
begin
for i:=1 to n do begin
a[i]:=random(100); {элемент выбирается случайно от 0 до 100}
s:=s+a[i]; {Когда эл. присвоился, его значение плюсуется к общ сумме}
end;
for i:=1 to n do
writeln(a[i],' '); {показать сам массив}
writeln(s); {показать сумму}
readln; {чтобы окно сразу не закрывалось} END.
Http://inflib.ru/index2.php?id=1128&Itemid=25&option=com_content&page=0&pop=1&task=view
Алгоритм такой:
1. Если массив закончился, завершить программу. Иначе к п.2
2. Освободить дырку справа
3. Найти правую границу массива, поставить там метку и вернуться к левой границе массива из оставшихся точек.
4. Вернуться к п. 1.
Dim x As real
Dim i As integer
INPUT x
FOR i=1 TO 30
x=x+(x*0.05)
NEXT i
PRINT x
END
П.С. не большая поправка верхнего решения, спасибо автору верхнего поста