Консультация № 137771
21.05.2008, 18:30
0.00 руб.
0 1 1
Уважаемые эксперты. Как решить эту задачу. Знаю только, что используется функция NOD. Заранеее спасибо.
Дана матрица А порядка n. Вычислить наибольший общий делитель для элементов каждой строки и столбца.

Обсуждение

Неизвестный
27.05.2008, 19:57
общий
это ответ

<i>Здравствуйте, <b>Корчагин Петр Александрович</b>!</i>

В приложении находится пример вычисления НОД для строк и столбцов квадратной матрицы.

<em>PS</em>
Извините, что не смог ответить раньше - были некоторые проблемы, не позволявшие мне этого сделать ранее.

<em>Удачи!</em>

Приложение:
program q137771;uses Crt;const {Максимальный размер квадратной матрицы} M_SIZE = 50;{Функция нахождения НОД из двух чисел}function nod(a, b: Integer): Integer; begin {Работаем только с положительными значениями a и b} a:= abs(a); b:= abs(b); while (a <> 0) and (b <> 0) do if (a >= b) then a:= a mod b else b:= b mod a; {Результат} nod:= a + b; end;var i, j, n: Byte; A: array[1..M_SIZE, 1..M_SIZE] of Integer; iNOD: Integer;begin {Очистка экрана} ClrScr; {Вводим размерность массива} repeat write(‘N = ‘); readln(n); until ((n > 0) and (n < 51)); {Заполнение массива} for i:= 1 to n do for j:= 1 to n do begin write(‘A[‘, i, ‘, ‘, j, ‘] = ‘); readln(A[i, j]); end; {Вычисление НОД} {Построчно} writeln(‘Stroki:‘); for i:= 1 to n do begin iNOD:= A[i, 1]; for j:= 2 to n do iNOD:= nod(iNOD, A[i, j]); writeln(i, ‘: ‘, iNOD); end; {По столбцам} writeln(‘Stolbcy:‘); for j:= 1 to n do begin iNOD:= A[1, j]; for i:= 2 to n do iNOD:= nod(iNOD, A[i, j]); writeln(j, ‘: ‘, iNOD); end; {Даем пользователю возможность насладиться результатом} writeln; write(‘Press any key...‘); readln;end.
Форма ответа