Работа с массивами - Pascal (91110)
Формулировка задачи:
ребят, помогите с 2 и 3-м заданием кто знает:
все нужно сделать в одной проге:
1) Сформировать массив элементов A по формуле a[i,j]:=(2*abs(3.3-i)-1.5)*(6.5-j)*exp(j*ln(2))*(i-3.4)*(j/3-1);
Это я сделал. Все работает. Вот:
Получили матрицу A.
2) Из матрицы A нужно получить элементы вектора X, как
- среднее арифметическое максимальных элементов i-го рядка и i-го столбца, если максимальные элементы положительные
- иначе - как сумы непарных элементов парных столбцов
3) Зная вектор X вычислить значение функции U, как (c=4, b=1):
- найменьшое произведение двух соседних элементов вектора X, если с>b
- иначе - за U взять последний элемент
Решение задачи: «Работа с массивами»
textual
Листинг программы
program test; uses crt; const Len=20; type mas=array[1..Len] of real; matr=array[1..Len, 1..Len] of real; procedure Matrica(var a:matr;var n:byte); var i,j:byte; begin repeat writeln('Vvedite razmernost matruzy A n='); readln(n); until n in [1..Len]; writeln; for i:=1 to n do for j:=1 to n do a[i,j]:=(2*abs(3.3-i)-1.5)*(6.5-j)*exp(j*ln(2))*(i-3.4)*(j/3-1); writeln('Matrica:'); for i:=1 to n do begin for j:=1 to n do write (a[i,j]:8:2); writeln; end; end; function Summa(a:matr;n:byte):real; var i,j:byte; s:real; begin s:=0; for j:=2 to n do for i:=1 to n do if (j mod 2=0)and odd(i) then s:=s+a[i,j]; Summa:=s; end; procedure Vector(a:matr;n:byte;var x:mas); var i,j:byte; mxi,mxj,s:real; begin for i:=1 to n do begin mxi:=a[1,i]; for j:=1 to n do if a[i,j]>mxi then mxi:=a[i,j]; mxj:=a[1,i]; for j:=1 to n do if a[j,i]>mxj then mxj:=a[j,i]; if(mxi>0)and(mxj>0)then x[i]:=(mxi+mxj)/2 else x[i]:=Summa(a,n); end; writeln('Вектор:'); for i:=1 to n do write(x[i]:8:2,' '); writeln; writeln; end; function U(x:mas;n:byte;b,c:real):real; var i:byte; mn:real; begin if c>b then begin mn:=x[1]*x[2]; for i:=2 to n do if x[i]*x[i-1]<mn then mn:=x[i]*x[i-1]; end else mn:=x[n]; U:=mn; end; var n:byte; a:matr; x:mas; c,b:real; begin clrscr; Matrica(a,n); Vector(a,n,x); writeln('Введите 2 числа:'); readln(b,c); write('U=',U(x,n,b,c):0:2); readln end.