baby_blues
Сообщение
#78210 20.11.2011, 14:26
Пожалуйста, помогите с задачей! Уже неделю с ней мучаюсь- ничего не получается!
Дана матрица А={a [i, j] }, {i=1, 2, .., n; j = 1, 2, .., m}
n=4 и m=7.
Найти среднее значение элементов 1 столбца и среднее значение элементов 2 столбца.
В каждом столбце подсчитать число элементов, больших среднего значения.
Среди элементов первых двух столбцов найти наибольший и поменять его с элементом последнего столбца, принадлежащим той же строчке. Напечатать элементы исходной и преобразованной матрицы.
для j>3 a[i,j]=x+y/(i+j*scrt(x)
В остальных случаях а=x+x/j!+ exp(5*ln(x))/i
Заранее большое спасибо!
Julia
Сообщение
#78213 20.11.2011, 14:36
А что получилось и с чем проблемы?
baby_blues
Сообщение
#78222 20.11.2011, 15:50
В общем, программа получилась, но в ответах одни нули.
program laboratornaja;
uses crt;
type matr=array[1..4,1..7] of real;
var a:matr;
i,j,v,k1,k2:integer;
x,y,s1,s2:real;
maxi,maxj:integer;{budut hranit' nomera naibolsh element
massiva}
buf:real;
f:text;
begin
clrscr;
writeln('Введите x');
readln(x);
writeln('Введите y');
readln(y);
assign(f,'r.pas');
rewrite(f);
v:=1;
for i:=1 to 4 do
for j:=1 to 7 do
v:=v*j;
if j>3 then a[i,j]:=x+y/(i+j*sqrt(x)) else
a[i,j]:=x+x/v+exp(5*ln(x))/i;
writeln(f,'Полученная матрица А');
for i:=1 to 4 do
begin
for j:=1 to 7 do write(f,a[i,j]:6:3, ' ');
writeln(f);
end;
s1:=0;
for i:=1 to 4 do
for j:=1 to 1 do
s1:=s1+a[i,j];
S1:=s1/4;
writeln(f,'Среднее арифметическое первого столбца',s1:6:3);
s2:=0;
for i:=1 to 4 do
for j:=2 to 2 do
s2:=s2+a[i,j];
S2:=s2/4;
writeln(f,'Среднее арифметическое второго столбца',s2:6:3);
k1:=0;
k2:=0;
for i:=1 to 4 do
for j:=1 to 1 do
if a[i,j]>s1 then k1:=k1+1;
writeln(f,'Чичло элементов 1 столбца больших среднего');
writeln(f,'k1=',k1:3);
for i:=1 to 4 do
for j:=2 to 2 do
if a[i,j]>s2 then k2:= k2+1;
writeln(f,'Число элементов 2 столбца больших среднего');
writeln(f,'k2=',k2:3);
maxi:=1;
maxj:=1;
for i:=1 to 4 do
for j:=1 to 2 do
if (a[i,j]>a[maxi,maxj]) then maxi:=i;
if (a[i,j]>a[maxi,maxj]) then maxj:=j;
buf:=a[maxi,maxj];
a[maxi,maxj]:=a[maxi,7];
a[maxi,7]:=buf;
writeln(f,'Максимальный элемент');
writeln(f,'a[maxi,maxj]',a[maxi,maxj]:3);
for i:=1 to 4 do
for j:=1 to 7 do
writeln(f,a[i,j]:6:3, ' ');
close(f);
end.
В ответе:
Полученная матрица А
0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000 4.167
Среднее арифметическое первого столбца 0.000
Среднее арифметическое второго столбца 0.000
Чичло элементов 1 столбца больших среднего
k1= 0
Число элементов 2 столбца больших среднего
k2= 0
Максимальный элемент
a[maxi,maxj] 0.0E+000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
4.167
Julia
Сообщение
#78307 23.11.2011, 9:06
В цикле, задающем матрицу, не хватает операторных скобок. В результате выполняется только первый оператор v:=v*j;
baby_blues
Сообщение
#78417 24.11.2011, 19:37
Спасибо за помощь!!! Ещё не пробовала изменить программу- но надеюсь, что всё получится!!!