Форум «Всё о Паскале» _ Задачи _ минимальные елементы строк матрицы
Автор: Yurka 8.12.2005 15:35
мне нужно найти минимальные елементы строк матрицы я написал процедуру, но метод по моему ужасный. А упростить чё то не выходит... вообщем вот эта процедура
Procedure Vector(var a:mas; var x:mas1); var i,j,k,y,z:integer; min1,min2,min3,min4,min5:real;
Begin min1:=a[1,1]; for j:=1 to 5 do begin if (min1>a[1,j]) then min1:=a[1,j]; x[1]:=min1; end;
min2:=a[2,1]; for j:=1 to 5 do begin if min2>a[2,j] then min2:=a[2,j]; x[2]:=min2; end;
min3:=a[3,1]; for j:=1 to 5 do begin if min3>a[3,j] then min3:=a[3,j]; x[3]:=min3; end;
min4:=a[4,1]; for j:=1 to 5 do begin if min4>a[4,j] then min4:=a[4,j]; x[4]:=min4; end;
min5:=a[5,1]; for j:=1 to 5 do begin if min5>a[5,j] then min5:=a[5,j]; x[5]:=min5; end;
for k:=1 to 5 do writeln('x[',k,']=',x[k]);
End;
и её нужно упростить...
Автор: volvo 8.12.2005 15:41
А что такое mas и mas1, мы должны догадаться? Названия типов сами за себя не говорят, будь добр привести определения...
P.S. Есть кнопка CODE
P.P.S. Так проще?
Procedure Vector(var a:mas; var x:mas1); var i, j: integer; min: real; begin for i := 1 to 5 do begin min := a[i, 1]; for j:=2 to 5 do if min > a[i,j] then min := a[i,j]; x[i]:=min; end;
for i := 1 to 5 do writeln('x[',i,']=',x[i]); end;
Автор: FreeMan 8.12.2005 15:52
Procedure Vector(var a:mas; var x:mas1); var i,j:integer;
Begin for i:=1 to 5 do x[i]:=a[i,1]; for i:=1 to 5 do for j:=1 to 5 do if a[i,j]<x[i] then x[i]:=a[i,j]; for i:=1 to 5 do writeln('x[',i,']=',x[i]);
End;
М
FreeMan, она не откомпилируется... Altair
Не заметил к сразу.
Автор: Yurka 8.12.2005 16:53
Цитата
А что такое mas и mas1, мы должны догадаться? Названия типов сами за себя не говорят, будь добр привести определения...
вот полный текст програми Условие а) вычислить элементы квадратной матрицы i=1..5, j=1..5 (за заданой формулой, формулу не пишу она есть в программе, да и это не так важно), при этом нужно использовать процедуру б) используя элементы матрицы вычислить элементы вектора x=|x|(i=1..5), они должны быть равны минимальным элементам строк матрицы (использовать процедуру) в)найти за формулой значение функции (использовать функцию)
Код
Program nomer28; uses crt; Type mas=array [1..5,1..5] of real; mas1=array [1..5] of real;
Procedure Matrix( var a:mas); var i,j,y:integer;
Begin for i:=1 to 5 do begin for j:=1 to 5 do begin y:=i-j; a[i,j]:=exp((-i)*ln(2))*(j-4.3)+(5*i+sin(i*j))/(exp(y*ln(2.71))); write('a[',i,',',j,']=',a[i,j]:2:2,' '); end; writeln; end; End;
Procedure Vector(var a:mas; var x:mas1); var i,j,k,y,z:integer; min1,min2,min3,min4,min5:real;
Begin min1:=a[1,1]; for j:=1 to 5 do begin if (min1>a[1,j]) then min1:=a[1,j]; x[1]:=min1; end;
min2:=a[2,1]; for j:=1 to 5 do begin if min2>a[2,j] then min2:=a[2,j]; x[2]:=min2; end;
min3:=a[3,1]; for j:=1 to 5 do begin if min3>a[3,j] then min3:=a[3,j]; x[3]:=min3; end;
min4:=a[4,1]; for j:=1 to 5 do begin if min4>a[4,j] then min4:=a[4,j]; x[4]:=min4; end;
min5:=a[5,1]; for j:=1 to 5 do begin if min5>a[5,j] then min5:=a[5,j]; x[5]:=min5; end;
for k:=1 to 5 do writeln('x[',k,']=',x[k]:2:2);
End;
Function G (x:mas1):real; var i,k:integer; S,d:real; Begin d:=1; S:=0; for i:=1 to 5 do begin begin for k:=1 to i do d:=d*(sqr(k)-x[k]); end; S:=S+d/(2.3*i+x[i]); end; G:=S; End;
VAR b:mas; x1:mas1; i,j:integer;
BEGIN clrscr; matrix(b); writeln; vector(b,x1); writeln; writeln('G=',G(x1):2:4); readkey; END.
Автор: Yurka 8.12.2005 17:20
всё работает, VOLVO я вставил твой алгоритм
Код
Program nomer28; uses crt; Type mas=array [1..5,1..5] of real; mas1=array [1..5] of real;
Procedure Matrix( var a:mas); var i,j,y:integer;
Begin for i:=1 to 5 do begin for j:=1 to 5 do begin y:=i-j; a[i,j]:=exp((-i)*ln(2))*(j-4.3)+(5*i+sin(i*j))/(exp(y*ln(2.71))); write('a[',i,',',j,']=',a[i,j]:2:2,' '); end; writeln; end; End;
Procedure Vector(var a:mas; var x:mas1); var i, j: integer; min: real; begin for i:=1 to 5 do begin min:=a[i, 1]; for j:=2 to 5 do if min>a[i,j] then min:=a[i,j]; x[i]:=min; end; for i := 1 to 5 do writeln('x[',i,']=',x[i]:2:2); end;
Function G (x:mas1):real; var i,k:integer; S,d:real; Begin d:=1; S:=0; for i:=1 to 5 do begin begin for k:=1 to i do d:=d*(sqr(k)-x[k]); end; S:=S+d/(2.3*i+x[i]); end; G:=S; End;
VAR b:mas; x1:mas1; i,j:integer;
BEGIN clrscr; matrix(b); writeln; vector(b,x1); writeln; writeln('G=',G(x1):2:4); readkey; END.