const n=5; var a:array[1..n,1..n] of integer; x:array[1..n] of double; i,j,k:byte; begin Randomize; Writeln('*** Исходный массив ***'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(51)-25; Write(a[i,j]:4) end; Writeln end; Writeln('*** Массив x ***'); for j:=1 to n do begin x[j]:=0; k:=0; for i:=1 to n do if a[i,j] mod 2=0 then begin x[j]:=x[j]+a[i,j]; Inc(k) end; if k>0 then x[j]:=x[j]/k; Write(x[j]:0:5,' ') end; Writeln end.
Объяснение:
// Example program
#include <iostream>
#include <string>
int main()
{
int k[30];
for(int i = 0; i < 30; i ++) //заполняем случайными числами
k[i] = rand();
int min_sum = 999999999;
int num1, num2;
for(int i = 0; i < (30 - 1); i ++) //цикл поиска, i меняется от начала
//до предпоследнего элемента, чтобы не выйти
//за пределы при обращении к i + 1 элементу
{
int sum = k[i] + k[i+1];//очередная сумма
if(sum < min_sum) //сравниваем ее с текущим минимумом
{//если она меньше, то
min_sum = sum;//обновляем текущую сумму
num1 = i; num2 = i + 1;//обновляем номер
}
}
//на выходе из цикла в min_sum и num1 и num2 имеем самые минимальные номера
std::cout << "min_sum = " << min_sum << " nomer1 = " << num1 <<" nomer2 = " << num2;
}
const
n=5;
var
a:array[1..n,1..n] of integer;
x:array[1..n] of double;
i,j,k:byte;
begin
Randomize;
Writeln('*** Исходный массив ***');
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=Random(51)-25;
Write(a[i,j]:4)
end;
Writeln
end;
Writeln('*** Массив x ***');
for j:=1 to n do begin
x[j]:=0; k:=0;
for i:=1 to n do
if a[i,j] mod 2=0 then begin
x[j]:=x[j]+a[i,j]; Inc(k)
end;
if k>0 then x[j]:=x[j]/k;
Write(x[j]:0:5,' ')
end;
Writeln
end.
Тестовое решение:
*** Исходный массив ***
-10 18 -8 -15 5
-21 -18 6 -2 9
-7 22 -4 3 14
21 16 -10 -18 -9
17 3 -14 -18 12
*** Массив x ***
-10.00000 9.50000 -6.00000 -12.66667 13.00000