Цитата:
Сообщение от NAt
а дальше я запуталась, подскажите пожалуйста)
|
Подсказываю.
Прежде всего, не следует самочинно упрощать задачу: если в условии стоит размерность матрицы nxm, т.е. число строк не обязано равняться числу столбцов, то и незачем делать матрицу квадратной. С другой стороны, раз Вы присваиваете элементам матрицы целые значения, то бессмысленно определять ее, как вещественную. То есть можно, конечно, но просто выводить сложнее, да и задавать элементы нужно так:
a[i,j]:= random*20-10;
Поэтому для простоты будем считать матрицу целочисленной.
Еще одно пояснение. В моем варианте программы используется не обычное определение массива
a:array[1..n,1..m] of integer;
а такая форма:
a:array[1..n] of array[1..m] of integer;
и, соответственно, элементы не a[i,j], а a[i][j]. Сделано это исключительно для наглядности, поскольку в конце приходится иметь дело с вектор-строками a[i]. Но можно всё это задавать и в обычной форме - тоже должно работать (по идее).
И еще. Желательно предусмотреть ситуацию, когда отрицательных чисел в строке не окажется вовсе. Сделано.
Код:
const
n=10;
m=12;
var
a:array[1..n] of array[1..m] of integer;
i,j,k:integer;
s:array[1..n] of real;
temp:real;
kol:array[1..n] of integer;
V:array[1..m] of integer;
Begin
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i][j]:= random(20)-10;
write(a[i][j]:4);
end;
writeln;
end;
writeln;
writeln;
for i:=1 to n do
begin
kol[i]:=0;
s[i]:=0;
for j:=1 to m do
if a[i][j]<0 then
begin
kol[i]:=kol[i]+1;
s[i]:=s[i]+a[i][j];
end;
end;
for i:=1 to n do
begin
if kol[i]>0 then
s[i]:=s[i]/kol[i];
write(s[i]:6:1);
end;
writeln;
writeln;
for k:=1 to n-1 do
for i:=1 to n-k do
if s[i]<s[i+1] then
begin
temp:=s[i];
s[i]:=s[i+1];
s[i+1]:=temp;
V:=a[i];
a[i]:=a[i+1];
a[i+1]:=V;
end;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i][j]:4);
writeln;
end;
Readln;
End.