Работа с массивами - 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.

Оцени полезность:

11   голосов , оценка 4.545 из 5
Похожие ответы