Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Написание программы с помощью процедур (http://www.tehnari.ru/f41/t49122/)

avatar3000 20.03.2011 15:21

Написание программы с помощью процедур
 
Здравствуйте уважаемые форумчане!!
Получить матрицу [Cij] i,j=от 1 до M из матриц [Aij] i,j=от 1 до M и [Bij] i,j=от 1 до M путем умножения элементов каждой строки матрицы [Aij] на максимальный элемент соответствующей строки матрицы [Bij].

Вот прога,ее нужно переписать,с помощью процедур.

program labo4;
CONST M=4;
VAR
A,B:Array[1..M,1..M] of Real;
Max:Array[1..M] of Real;
i,j:Byte;
BEGIN
For i:=1 to M do
For j:=1 to M do
begin
Write('A[',i,',',j,']= ');
ReadLn(A[i,j]);
end;
For i:=1 to M do
For j:=1 to M do
begin
Write('B[',i,',',j,']= ');
ReadLn(B[i,j]);
end;
WriteLn('Initial matrices:');
For i:=1 to M do
begin
For j:=1 to M do
Write(A[i,j]:6:1);
Write(' ');
For j:=1 to M do
Write(B[i,j]:6:1);
WriteLn;
end;
For i:=1 to M do
begin
Max[i]:=B[i,1];
for j:=2 to M do
if B[i,j]>Max[i] then Max[i]:=B[i,j];
end;
WriteLn;
Write('Maximum values: ');
For i:=1 to M do
Write(Max[i]:6:1);
WriteLn;
WriteLn;
WriteLn('Modified matrix:');
For i:=1 to M do
begin
For j:=1 to M do
Write(A[i,j]*Max[i]:12:1);
WriteLn;
end;
ReadLn;
END.

Помогите у кого время есть,заранее бесконечное спасибо)))

Vladimir_S 20.03.2011 15:58

Цитата:

Сообщение от avatar3000 (Сообщение 488670)
Помогите у кого время есть

Примерно через час посмотрю.

Vladimir_S 20.03.2011 17:56

Ну вот, раз уж обещал:
Код:

program labo4a;

CONST
 M=4;

TYPE
 Mtr=Array[1..M,1..M] of Real;
 Vct=Array[1..M] of Real;

VAR
 A,B,C:Mtr;
 Max:Vct;

Procedure Enter_Matrix(Nm:Char; var Em:Mtr);
var i,j:Byte;
begin
 For i:=1 to M do
  For j:=1 to M do
  begin
    Write(Nm,'[',i,',',j,']= ');
    ReadLn(Em[i,j]);
  end;
 WriteLn;
end;

Procedure Show_Matrix(Nm:Char;Sm:Mtr);
var i,j:Byte;
begin
 WriteLn('Matrix '+Nm+':');
 For i:=1 to M do
  begin
  For j:=1 to M do
    Write(Sm[i,j]:8:3);
  WriteLn;
  end;
 WriteLn;
end;

Procedure Form_Vector(Fm:Mtr; var Fv:Vct);
var i,j:Byte;
begin
 For i:=1 to M do
  begin
  Fv[i]:=Fm[i,1];
  for j:=2 to M do
    if Fm[i,j]>Fv[i] then Fv[i]:=Fm[i,j];
  end;
 WriteLn('Maxima: ');
 For i:=1 to M do Write(Fv[i]:8:3);
 WriteLn;
 WriteLn;
end;

Procedure New_Matrix(Mm:Mtr;Vm:Vct; var Nt:Mtr);
var i,j:Byte;
begin
 For i:=1 to M do
  For j:=1 to M do
  Nt[i,j]:=Mm[i,j]*Vm[i];
end;

BEGIN
 Enter_Matrix('A',A);
 Enter_Matrix('B',B);
 Show_Matrix('A',A);
 Show_Matrix('B',B);
 Form_Vector(B,Max);
 New_Matrix(A,Max,C);
 Show_Matrix('C',C);
 ReadLn;
END.


avatar3000 20.03.2011 20:18

Примного благодарен))


Часовой пояс GMT +4, время: 18:38.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.