/**********************************************************\
|* Программа для совершения некоторых действий с матрицей *|
\**********************************************************/
// размер
const int SIZE = 5;
// непосредственно матрица
double matrix[SIZE][SIZE];
// результирующая матрица
double res[SIZE][SIZE];
// построение матрицы по некоторому условию
void m_init(){
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
matrix[j] = (i == j) ? (1.5 * i * i + j * j) : ((i * i - j * j) / 2.1);
}
// нахождение максимального элемента в матрице
double m_max()
{ double max = 0;
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (matrix[j] > max)
max = matrix[j];
return max;
}
// поэлементное перемножение строк. именно строк, а не строки и столбца,
// т.к. матрица умножается на саму себя в транспонированном виде
double str_comp_t(int n1, int n2)
{
double ret = 0;
for (int i = 0; i < SIZE; i++)
ret += matrix[n1] * matrix[n2];
return ret;
}
// перемножение матрицы на саму себя в транспонированном виде
void m_comp_t()
{
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
res[j] = str_comp_t(i, j);
}
// умножение матрицы на константу
void m_comp_c(int c)
{
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
res[j] = matrix[j] * c;
}
int main()
{
double max;
m_init();
max = m_max();
(max > 10) ? m_comp_t() : m_comp_c(max);
return 0;
}
Переписать прогу с С++ на паскаль
если кому не сложно перегоните её на паскаль (можно это сделать даже не вникая в суть)))
Код:
Код:
(**********************************************************\
|* Программа для совершения некоторых действий с матрицей *|
\**********************************************************)
const
{ размер }
SIZE = 5;
var
{ непосредственно матрица и результирующая матрица}
matrix,res:array[0..SIZE-1,0..SIZE-1] of real;
{ построение матрицы по некоторому условию }
procedure m_init;
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE-1 do
if i=j then matrix[i,j]:=1.5*i*i+j*j
else
matrix[i,j]:=(i*i-j*j)/2.1;
end;
{ нахождение максимального элемента в матрице }
function m_max:real;
const max:real=0;
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE-1 do
if matrix[i,j] > max then max:=matrix[i,j];
m_max:=max;
end;
{ поэлементное перемножение строк. именно строк, а не строки и столбца,
т.к. матрица умножается на саму себя в транспонированном виде}
function str_comp_t(n1,n2:integer):real;
const ret:real=0;
var i:integer;
begin
for i := 0 to SIZE-1 do
ret := ret+matrix[n1,i]*matrix[n2,i];
str_comp_t:=ret;
end;
{ перемножение матрицы на саму себя в транспонированном виде }
procedure m_comp_t;
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE do
res[i,j] := str_comp_t(i, j);
end;
{ умножение матрицы на константу}
procedure m_comp_c(c:real);
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE-1 do
res[i,j] := matrix[i,j] * c;
end;
var max:real;
begin
m_init;
max := m_max;
if max > 10 then m_comp_t
else m_comp_c(max);
end.
|* Программа для совершения некоторых действий с матрицей *|
\**********************************************************)
const
{ размер }
SIZE = 5;
var
{ непосредственно матрица и результирующая матрица}
matrix,res:array[0..SIZE-1,0..SIZE-1] of real;
{ построение матрицы по некоторому условию }
procedure m_init;
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE-1 do
if i=j then matrix[i,j]:=1.5*i*i+j*j
else
matrix[i,j]:=(i*i-j*j)/2.1;
end;
{ нахождение максимального элемента в матрице }
function m_max:real;
const max:real=0;
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE-1 do
if matrix[i,j] > max then max:=matrix[i,j];
m_max:=max;
end;
{ поэлементное перемножение строк. именно строк, а не строки и столбца,
т.к. матрица умножается на саму себя в транспонированном виде}
function str_comp_t(n1,n2:integer):real;
const ret:real=0;
var i:integer;
begin
for i := 0 to SIZE-1 do
ret := ret+matrix[n1,i]*matrix[n2,i];
str_comp_t:=ret;
end;
{ перемножение матрицы на саму себя в транспонированном виде }
procedure m_comp_t;
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE do
res[i,j] := str_comp_t(i, j);
end;
{ умножение матрицы на константу}
procedure m_comp_c(c:real);
var i,j:integer;
begin
for i := 0 to SIZE-1 do
for j := 0 to SIZE-1 do
res[i,j] := matrix[i,j] * c;
end;
var max:real;
begin
m_init;
max := m_max;
if max > 10 then m_comp_t
else m_comp_c(max);
end.