Цитата:
Сообщение от priiirver
Частично я сделал задание, но дальше не знаю как, помогите
|
Помогаю.
Но прежде — одно замечание. Из задания я напрочь не понял пассаж про "отрицательные элементы": откуда их взять и куда вывести. Дело в том, что если предполагается вычитание максимального элемента КАЖДОГО ИЗ СТОЛБЦОВ из соответствующей суммы, то тут никаких отрицательных элементов не может появиться в принципе. Если же речь идёт о нахождении максимального элемента ВСЕЙ МАТРИЦЫ с последующим его вычитанием из сумм по столбцам, то тут появление отрицательных элементов хоть и возможно, но крайне маловероятно (например, если ВСЕ элементы столбца не превышают 8, а максимальный элемент — где-то в районе 100). Остановился на последнем варианте, хоть как-то осмысленном.
Код:
uses crt;
const n=12;
var
a:array[1..n,1..n] of byte;
sums:array[1..n] of integer;
i,j,max_el:byte;
f:text;
begin
clrscr;
randomize;
assign(f,'output.txt');
rewrite(f);
writeln('Matrix:');
writeln(f,'Matrix:');
max_el:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(101);
if a[i,j]>max_el then max_el:=a[i,j];
write(a[i,j]:5);
write(f,a[i,j]:5);
end;
writeln;
writeln(f);
end;
writeln;
writeln(f);
writeln('Maximal element is ',max_el);
writeln(f,'Maximal element is ',max_el);
writeln;
writeln(f);
writeln('Column sums:');
writeln(f,'Column sums:');
for j:=1 to n do
begin
sums[j]:=0;
for i:=1 to n do
sums[j]:=sums[j]+a[i,j];
write(sums[j]:5);
write(f,sums[j]:5);
end;
writeln;
writeln(f);
writeln;
writeln(f);
writeln('Negatives:');
writeln(f,'Negatives:');
for j:=1 to n do
begin
if (sums[j]-max_el)<0 then
begin
write((sums[j]-max_el):5);
write(f,(sums[j]-max_el):5);
end
else
begin
write(' pos');
write(f,' pos');
end;
end;
close(f);
writeln;
writeln;
writeln('Data is saved in output.txt');
readkey
end.