spell » 26 ноя 2007, 19:05
К данной программе надо написать процедуру которая будет заменять отрицательные элементы массива на положительные (К примеру -5 на 5, -6 на 6 и т.д. ) и выведет матрицу уже с измененными элементами на экран.
Заранее всем СПАСИБО!
Программа:
Program prog4;
Uses Crt;
Type TArray=Array[1..10,1..10] of Real;
Var A, B, C, D : TArray; n,m,k,l : Byte; h : Char; Ar : Real;
Procedure InMatr1(Var x:TArray; row,col:Byte);
Var i,j:Byte;
Begin
Randomize;
For i:=1 to row do Begin
For j:=1 to col do Begin
X[i,j]:=sin((i+j)/2);
Write(x[i,j]:7:2,' ');
End;
Writeln;
End;
End; {--------------------------------------------}
Procedure InMatr2(Var x:TArray; row,col:Byte);
Var i,j:Byte;
Begin
Randomize;
For i:=1 to row do Begin
For j:=1 to col do Begin
X[i,j]:=cos((5*i)-(2*j));
Write(x[i,j]:7:2,' ');
End;
Writeln;
End;
End; {--------------------------------------------}
Function Sum(x:TArray; row,col:Byte):Real;
Var S :Real; i,j:Byte;
Begin
S:=0;
For i:=1 to row do
For j:=1 to col do
If x[i,j]>0 Then S:=S+X[i,j];
Sum:=S;
End; {--------------------------------------------}
Procedure NewMatr(x:TArray; row,col:Byte; Var y:TArray);
Var i,j:Byte; MMax:real;
Function Max(x:TArray; row,col:Byte):Real;
Var M :Real; i,j:Byte;
Begin
M:=x[1,1];
For i:=1 to row do
For j:=1 to col do IF x[i,j] > M Then M:=X[i,j];
Max:=M;
End;
Begin
MMax:=Max(x,row,col);
For i:=1 to row do For j:=1 to col do y[i,j]:=x[i,j]/MMax;
End; {--------------------------------------------}
Procedure Print(x:TArray; row,col:Byte);
Var i,j:Byte;
Begin
For i:=1 to row do Begin
For j:=1 to col do Begin
Write(x[i,j]:7:2,' ');
End;
Writeln;
End;
End;
BEGIN
Write('vvedite chislo strok mattricy А ne bolee 10 ');
Readln(n,m);
Writeln('vybirite sposob formirovaniya matrizy A');
Write('1 -> sinus; 2 or other -> cosinus : ');
Readln(h);
IF h='1' Then InMatr1(A,n,m) Else InMatr2(A,n,m);
Write('vvedite chislo strok mattricy B ne bolee 10 '); Readln(k,l);
Writeln('vybirite sposob formirovaniya matrizy B');
Write('1 -> sinus; 2 or other->cosinus : ');
Readln(h);
IF h='1' Then InMatr1(B,k,l) Else InMatr2(B,k,l);
Ar:=(Sum(A,n,m)+Sum(B,k,l))/2;
Writeln('srednee arifmetich = ',Ar:8:3);
Writeln('******* vyvod matr С ******');
Print(C,n,m);
NewMatr(B,k,l,D);
Writeln('******* the end ******');
Print(D,k,l);
Readkey;
End.
К данной программе надо написать процедуру которая будет заменять отрицательные элементы массива на положительные (К примеру -5 на 5, -6 на 6 и т.д. ) и выведет матрицу уже с измененными элементами на экран.
Заранее всем СПАСИБО!
Программа:
Program prog4;
Uses Crt;
Type TArray=Array[1..10,1..10] of Real;
Var A, B, C, D : TArray; n,m,k,l : Byte; h : Char; Ar : Real;
Procedure InMatr1(Var x:TArray; row,col:Byte);
Var i,j:Byte;
Begin
Randomize;
For i:=1 to row do Begin
For j:=1 to col do Begin
X[i,j]:=sin((i+j)/2);
Write(x[i,j]:7:2,' ');
End;
Writeln;
End;
End; {--------------------------------------------}
Procedure InMatr2(Var x:TArray; row,col:Byte);
Var i,j:Byte;
Begin
Randomize;
For i:=1 to row do Begin
For j:=1 to col do Begin
X[i,j]:=cos((5*i)-(2*j));
Write(x[i,j]:7:2,' ');
End;
Writeln;
End;
End; {--------------------------------------------}
Function Sum(x:TArray; row,col:Byte):Real;
Var S :Real; i,j:Byte;
Begin
S:=0;
For i:=1 to row do
For j:=1 to col do
If x[i,j]>0 Then S:=S+X[i,j];
Sum:=S;
End; {--------------------------------------------}
Procedure NewMatr(x:TArray; row,col:Byte; Var y:TArray);
Var i,j:Byte; MMax:real;
Function Max(x:TArray; row,col:Byte):Real;
Var M :Real; i,j:Byte;
Begin
M:=x[1,1];
For i:=1 to row do
For j:=1 to col do IF x[i,j] > M Then M:=X[i,j];
Max:=M;
End;
Begin
MMax:=Max(x,row,col);
For i:=1 to row do For j:=1 to col do y[i,j]:=x[i,j]/MMax;
End; {--------------------------------------------}
Procedure Print(x:TArray; row,col:Byte);
Var i,j:Byte;
Begin
For i:=1 to row do Begin
For j:=1 to col do Begin
Write(x[i,j]:7:2,' ');
End;
Writeln;
End;
End;
BEGIN
Write('vvedite chislo strok mattricy А ne bolee 10 ');
Readln(n,m);
Writeln('vybirite sposob formirovaniya matrizy A');
Write('1 -> sinus; 2 or other -> cosinus : ');
Readln(h);
IF h='1' Then InMatr1(A,n,m) Else InMatr2(A,n,m);
Write('vvedite chislo strok mattricy B ne bolee 10 '); Readln(k,l);
Writeln('vybirite sposob formirovaniya matrizy B');
Write('1 -> sinus; 2 or other->cosinus : ');
Readln(h);
IF h='1' Then InMatr1(B,k,l) Else InMatr2(B,k,l);
Ar:=(Sum(A,n,m)+Sum(B,k,l))/2;
Writeln('srednee arifmetich = ',Ar:8:3);
Writeln('******* vyvod matr С ******');
Print(C,n,m);
NewMatr(B,k,l,D);
Writeln('******* the end ******');
Print(D,k,l);
Readkey;
End.