Решите в паскале, использование массивов, вычислить сумму тех элементов массива а(10), числовые значения которых принадлежат полуинтервалу i ≤ a[i] ≤ i+1.
Const n=10; var i,s:integer; a:array[1..n] of integer; begin Randomize; Write('Исходный массив: '); s:=0; for i:=1 to n do begin a[i]:=Random(15)+1; Write(a[i],' '); if (a[i]>=i) and (a[i]<=i+1) then s:=s+a[i] end; Writeln; Write('Сумма элементов в заданном полуинтервале равна ',s) end.
Пример выполнения Исходный массив: 8 9 8 12 10 3 8 1 10 2 Сумма элементов в заданном полуинтервале равна 18
Программа считывает строку с клавиатуры, разбивает ее на числа (их может быть больше двух) и суммирует все найденные числа. Программа работает только с суммой, для выполнения других действий, необходима доработка.
Код: procedure calculateSum(str : string);var s0 : string; number, sum : real;begin sum := 0; foreach s0 in Regex.Split(str, '\++') do begin number := StrToFloat(s0); if (number > 0) then begin sum := sum + number; end; end; writeln(str + '=' + sum);end; var s : string;begin write('Введите пример: '); readln(s); calculateSum(s); end.
2. Популярное до сих пор в школах решение на TurboPascal 7.01 (1983г.)
uses Crt; const nn=100; var i,n,min:integer; a:array[1..nn] of integer; begin ClrScr; Randomize; Write('n='); Read(n); min:=100; for i:=1 to n do begin a[i]:=Random(101)-50; Write(a[i],' '); if a[i]<min then min:=a[i] end; Writeln; for i:=1 to n do if a[i]<0 then a[i]:=a[i]*min; for i:=1 to n do Write(a[i],' '); Writeln; ReadKey end.
n=10;
var
i,s:integer;
a:array[1..n] of integer;
begin
Randomize;
Write('Исходный массив: ');
s:=0;
for i:=1 to n do begin
a[i]:=Random(15)+1;
Write(a[i],' ');
if (a[i]>=i) and (a[i]<=i+1) then s:=s+a[i]
end;
Writeln;
Write('Сумма элементов в заданном полуинтервале равна ',s)
end.
Пример выполнения
Исходный массив: 8 9 8 12 10 3 8 1 10 2
Сумма элементов в заданном полуинтервале равна 18