Помощь - Поиск - Пользователи - Календарь
Полная версия: Pascal!!!! > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
baby_blues
Пожалуйста, помогите с задачей! Уже неделю с ней мучаюсь- ничего не получается!

Дана матрица А={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
А что получилось и с чем проблемы?
baby_blues
В общем, программа получилась, но в ответах одни нули.
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
В цикле, задающем матрицу, не хватает операторных скобок. В результате выполняется только первый оператор v:=v*j;
baby_blues
Спасибо за помощь!!! Ещё не пробовала изменить программу- но надеюсь, что всё получится!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.