Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Помогите с матрицей (http://www.tehnari.ru/f43/t264274/)

priiirver 23.05.2019 02:10

Помогите с матрицей
 
Сумма столбцов. Задана двумерная матрица размерностью 12x12 элементов, заполненная случайными числами из диапазона [0, 100]. Найти, максимальный элемент и сумму элементов по столбцам таблицы, вычесть из каждой суммы максимальный элемент, вывести отрицательные элементы, результаты вывести на экран и записать в файл "output.txt"

priiirver 23.05.2019 02:11

Частично я сделал задание, но дальше не знаю как, помогите

uses crt;
const n=12;
var a:array[1..n,1..n] of byte;
i,j:byte;
s:integer;
f:text;
begin
clrscr;
randomize;
assign(f,'output.txt');
rewrite(f);
writeln('Матрица');
writeln(f,'Matrica');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(101);
write(a[i,j]:3);
write(f,a[i,j]:3);
end;
writeln;
writeln(f);
end;
writeln('Суммы по столбцам');
writeln(f,'Summy po stolbcam');
for j:=1 to n do
begin
s:=0;
for i:=1 to n do
s:=s+a[i,j];
writeln(j:2,'=',s);
writeln(f,j:2,'=',s);
end;
close(f);
write('Результат записан в файл output.txt');
readkey
end.

Vladimir_S 23.05.2019 10:32

Цитата:

Сообщение от priiirver (Сообщение 2647963)
Частично я сделал задание, но дальше не знаю как, помогите

Помогаю.
Но прежде — одно замечание. Из задания я напрочь не понял пассаж про "отрицательные элементы": откуда их взять и куда вывести. Дело в том, что если предполагается вычитание максимального элемента КАЖДОГО ИЗ СТОЛБЦОВ из соответствующей суммы, то тут никаких отрицательных элементов не может появиться в принципе. Если же речь идёт о нахождении максимального элемента ВСЕЙ МАТРИЦЫ с последующим его вычитанием из сумм по столбцам, то тут появление отрицательных элементов хоть и возможно, но крайне маловероятно (например, если ВСЕ элементы столбца не превышают 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.



Часовой пояс GMT +4, время: 09:36.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.