Консультация № 184962
26.12.2011, 06:25
73.95 руб.
0 2 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Нужно написать программу в Turbo Pascal, желательно с комментариями.

Заданы две матрицы А(6,6) и В(6,6). Для матрицы, которая отвечает
заданному условию (1) выполните преобразования (2).
Условие (1) проверить в подпрограмме Function, преобразование
выполнить в подпрограмме Procedure.

1 – больше сумма отрицательных элементов на главной диагонали
2 – в каждой строке найти минимальный элемент и место, где он
расположен

Буду очень признателен за помощ

Обсуждение

Неизвестный
26.12.2011, 16:57
общий
это ответ
Здравствуйте, xDefx!
Есть такое решение задачи:
Код:
uses
crt; {стандартный модуль}

type
TData = array[1..6, 1..6] of shortint;
{тип для хранения матриц}

const
A: TData = ( {матрица А}
(0, 1, 2, 3, 4, 5),
(6, 7, 8, 9, 10, 11),
(12, 13, 14, 15, 16, 17),
(18, 19, 20, 21, 22, 23),
(24, 25, 26, 27, 28, 29),
(30, 31, 32, 33, 34, 35));

B: TData = ( {матрица В}
(0, 1, 2, 3, 4, 5),
(6, 7, 8, 9, 10, 11),
(12, 13, -14, 15, 16, 17),
(18, 19, 20, -21, 22, 23),
(24, 25, 26, 27, -28, 29),
(30, 31, 32, 33, 34, 35));

function isCondition(ar:TData): boolean; {функция проверки заданного условия}
var
S: integer; {сумма элементов главной диагонали}
i: byte; {счетчик}
begin
S := 0; {сперва сумма равна нулю}
for i:=1 to 6 do {посмотрим каждый элемент главной диагонали матрицы}
S := S + ar[i, i]; {просуммируем их все}
isCondition := (S < 0); {если итог < 0, значит cумма отрицательных элементов больше, чем положительных}
end;

procedure findMinInRows(ar: TData); {нахождение минимальных элементов в строке}
var
i, j, mini, minj: byte; {счетчики и индексы}
min: shortint; {значение минимума}
begin
for i:=1 to 6 do begin {для каждой строки}
min := ar[i, 1]; {предположим, что первый - минимальный}
minj := 1; {запомним позицию}
for j:=2 to 6 do {проверим остальные элементы в строке}
if (min > ar[i, j]) then begin {если увидим меньшее значение}
min := ar[i, j]; {изменим значение минимального}
minj := j; {и запомним позицию}
end;
writeln('[', i, ', ', minj, '] = ', min); {выводим результат для строки}
end;
end;

procedure check(name: string; ar: TData); {проверка матрицы}
begin
if isCondition(ar) then begin {если матрица соответсвует условию }
writeln(name, ':'); {покажем имя матрицы}
findMinInRows(ar); {и минимальные значения для строк}
end;
end;

begin
clrscr; {очистка экрана}
check('A', A); {проверка матрицы А}
check('B', B); {проверка матрицы В}
writeln('Done. Press any key...'); {Сообщение о завершении работы}
readkey; {Ожидание нажатия пользователем клавиши}
end.

5
Неизвестный
27.12.2011, 10:58
общий
1 – больше сумма отрицательных элементов на главной диагонали

Чтото совсем я не понял, разбирая условие....тут может требуется проверить каждую матрицу по главной диагонали и выяснить в какой сумма отрицательных элементов больше?

Форма ответа