Здравствуйте, помогите решить задачу. Дано массивы А1(N1,M1), A2(N2, M2), A3(N3,M3) вычислить Y:= Y1+Y2+Y3, где Y1, Y2, Y3 - ср. арифметическое отрицательных элементов нечетных строк массивов А1, А2, А3. Вычисление среднего арифметического отрицательных элементов нечетных строк массива оформить в виде подпрограммы.
Я пока только ввел массивы, а дальше не получается.
Program tt;
type mass=array [1..10,1..10] of integer;
var a1,a2,a3:mass;
y, y1, y2, y3, i:integer;
function
Двумерные массивы, сортировка.
Y1 - A1
Y2 - A2
.....
?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
1) Рандом можешь заменить своими числами, мне так было удобней.
2) На экране обычно мы начинаем считать с единицы, но массив начинается с нуля. Поэтому в программе идет проверка на четные позиции которые на экране отображаются как не четные(т.е. в программе 0 будет равен первой позиции 1). Вообщем не забивайте голову но имейте ввиду, что если препод задаст вопрос, то просто измените значение "if (i mod 2) = 0" на "if (i mod 2) <> 0".
[syntax='Pascal']
uses
Crt;
type
mass=array [0..50,0..50] of integer;
var
a1,a2,a3:mass;
y,y1,y2,y3:real;
n1,m1,n2,m2,n3,m3:integer;
function aref(a:mass; m,n: integer):real;
var
i,j,t:integer;
k,p:real;
begin
k:=0;
t:=0;
for i := 0 to m do
begin
for j := 0 to n do
begin
a[i,j] := (-2 + random(9));
write(a[i,j], ' ');
end;
writeln;
end;
for I := 0 to m do
begin
if (i mod 2) = 0 then
for j := 0 to n do
begin
if a[i,j] < 0 then
begin
k:=k+a[i,j];
inc(t);
end;
end;
end;
aref:=k/t;
end;
begin
ClrScr;
writeln('vvedite a1[n1,m1]');
write('n1: ');
readln(n1);
write('m1: ');
readln(m1);
writeln('vvedite a2[n2,m2]');
write('n2: ');
readln(n2);
write('m2: ');
readln(m2);
writeln('vvedite a3[n3,m3]');
write('n3: ');
readln(n3);
write('m3: ');
readln(m3);
writeln;
y1:=aref(a1,n1,m1);
writeln('s/a [Y1] = ',y1:2:2);
writeln;
y2:=aref(a2,n2,m2);
writeln('s/a [Y2] = ',y2:2:2);
writeln;
y3:=aref(a3,n3,m3);
writeln('s/a [Y3] = ',y3:2:2);
writeln;
y:=y1+y2+y3;
writeln('Y:=Y1+Y2+Y3 = ',y:2:2);
readln;
end.
[/syntax]
Y2 - A2
.....
?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
1) Рандом можешь заменить своими числами, мне так было удобней.
2) На экране обычно мы начинаем считать с единицы, но массив начинается с нуля. Поэтому в программе идет проверка на четные позиции которые на экране отображаются как не четные(т.е. в программе 0 будет равен первой позиции 1). Вообщем не забивайте голову но имейте ввиду, что если препод задаст вопрос, то просто измените значение "if (i mod 2) = 0" на "if (i mod 2) <> 0".
[syntax='Pascal']
uses
Crt;
type
mass=array [0..50,0..50] of integer;
var
a1,a2,a3:mass;
y,y1,y2,y3:real;
n1,m1,n2,m2,n3,m3:integer;
function aref(a:mass; m,n: integer):real;
var
i,j,t:integer;
k,p:real;
begin
k:=0;
t:=0;
for i := 0 to m do
begin
for j := 0 to n do
begin
a[i,j] := (-2 + random(9));
write(a[i,j], ' ');
end;
writeln;
end;
for I := 0 to m do
begin
if (i mod 2) = 0 then
for j := 0 to n do
begin
if a[i,j] < 0 then
begin
k:=k+a[i,j];
inc(t);
end;
end;
end;
aref:=k/t;
end;
begin
ClrScr;
writeln('vvedite a1[n1,m1]');
write('n1: ');
readln(n1);
write('m1: ');
readln(m1);
writeln('vvedite a2[n2,m2]');
write('n2: ');
readln(n2);
write('m2: ');
readln(m2);
writeln('vvedite a3[n3,m3]');
write('n3: ');
readln(n3);
write('m3: ');
readln(m3);
writeln;
y1:=aref(a1,n1,m1);
writeln('s/a [Y1] = ',y1:2:2);
writeln;
y2:=aref(a2,n2,m2);
writeln('s/a [Y2] = ',y2:2:2);
writeln;
y3:=aref(a3,n3,m3);
writeln('s/a [Y3] = ',y3:2:2);
writeln;
y:=y1+y2+y3;
writeln('Y:=Y1+Y2+Y3 = ',y:2:2);
readln;
end.
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)