• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с матрицей

priiirver

Ученик
Регистрация
23 Май 2019
Сообщения
3
Реакции
0
Баллы
0
Помогите с матрицей

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

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