Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

TurboPascal. Дана матрица целых чисел. Возвести её во вторую степень, вывести исходную и полученную матрицы

Anastasia Khmeleva Мастер (1887), закрыт 15 лет назад
В общем то как ввести-вывести мы знаем,подскажите пожалуйста,как написать на языке турбо паскаль её возведение в квадрат, прям так как надо писать в программе,заранее спасибо
Лучший ответ
Gennady Гений (60222) 15 лет назад
Доброго времени суток.

Ну, ну, Роман Папко, с каких это пор возведение в квадрат элементов матрицы стало эквивалентом возведения в квадрат самой матрицы? Во все времена, возведение числа в квадрат выполнялось умножением числа само на себя. Это же справедливо и для матриц. Т. е.

()^2 = () * ()

Осталось только всего ничего, реализовать процедуру умножения матриц. Вот возможный вариант. Годится для перемножения не только квадратных матриц.

const
M = 4;{число строк}
N = 6;{число столбцов}
K = 4;{число столбцов второго массива}

type
Data = Integer;
Arr2 = array[1..M, 1..N] of Data; {двухмерный массив целых чисел}

procedure MatrMul(A,B: Arr2; var C: Arr2);
var
i, j, s : Integer;
begin
FillChar(C, SizeOf(C), 0); {обнуляем результирующую матрицу C}
for i:=1 to M do {цикл по строкам матрицы А}
for j:=1 to K do {цикл по столбцам матрицы В}
for s:=1 to N do {цикл по столбцам А и строкам В}
C[ i,j ] := C[ i,j ] + A[ i,s ] * B[ s,j ];
end;

Разменость подставьте какую надо. Полагаю, как воспользоваться функцией догадаетесь?

Удачи!
Остальные ответы
Роман Папко Мастер (1397) 15 лет назад
for i=1 to n do
b(i):=sqr(a(i))

где a(i) первая исходная матрица, b(i) вторая матрица результат квадратирования первой, n - число элементов матрицы. только круглые скобки заменить на квадратные в местах где указывается элемент массива
Anastasia KhmelevaМастер (1887) 15 лет назад
ммм...нет,это не правильно к сожалению,там формула и она не такая,там поэлементное умножение
Роман Папко Мастер (1397) а по какой формуле матрица возводится в квадрат?
Разгуляева Елена Мыслитель (7015) 15 лет назад
Вот кусок программы с процедурой перемножения матриц

Const max = 5;
Type
matrix = array[1..max, 1..max] of integer;

var kmax, ch : byte;
A, B, : matrix;

{Умножение двух матриц: Resul = m1* m2}
Procedure MultMatrix(m1, m2: matrix; var Resul : matrix);
var i, j, k : byte;
begin
for i:= 1 to kmax do begin
for j := 1 to kmax do begin
Resul [ i, j ] := 0;
for k := 1 to kmax do begin
Resul [ i, j ] := Resul [ i, j ]+ m1 [ i, k ] * m2 [ k, j ] ;
end;
end;
end;
end;

Вызываем процедуру
MultMatrix(A, A, B);
результат в В
Похожие вопросы