04.12.2012, 13:16 | #1 (permalink) |
Member
Регистрация: 05.11.2012
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Программирование матричных операций
Разработать программу решения четырех взаимосвязанных задач частой работы: 1) расчета элементов квадратной матрицы A = (ai,j ), i,j = 1,2,...,n по заданной формуле; 2) вычисления элементов вектора X = (xi), i = 1,2,...,n по заданному правилу; 3) требуемого упорядочения элементов матрицы А или вектора Х; 4) вычисления значения y по заданной формуле. Размерность задачи n назначается преподавателем. ниже на скринах представленны задание и пример блок схему есть образец программы Program Lab5; const n=5; type matr=array[1..n, 1..n] of real; vect=array[1..n] of real; var i, j : integer; y:real; a : matr; x : vect; Procedure _matrica(n:integer; A:matr); var i, j : integer; begin for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Sin(i)/Cos(i)+Cos(j)/Sin(j); write (A[i,j]:8:3); end; writeln; end; end; Procedure Matrica(n:integer; var A:matr); var i,j:integer; Begin for i:=1 to n do for j:=1 to n do a[i,j]:=Sin(i)/Cos(i)+Cos(j)/Sin(j); End; Procedure Vector(n:integer; A:matr; var x:vect); var i,j,k:integer; s:real; Begin Writeln; Writeln; writeln('********************************'); for j:=1 to n do Begin s:=A[1,1]; for i:=1 to n do Begin k:=j mod 2; if (A[i,j]>s) and (k=0) then s:=A[i,j] else begin if (A[i,j]<s) and (k<>0) then s:=A[i,j]; End;end; x[j]:=s; End; End; Procedure Porjdok(n:integer; var A:matr); var i,j:integer; c:real; Begin Writeln; Writeln; writeln('***************************'); for i:=1 to n do for j:=i+1 to n do Begin if Abs(a[1,i])>Abs(a[1,j]) then Begin c:=a[1,i]; a[1,i]:=a[1,j]; a[1,j]:=c; End; End; End; Function Fyn(n:integer; X:vect):real; Var i,k:integer; s, y:real; Begin Writeln; Writeln; writeln('***************************************** *'); y:=0; i:=2; while i <= n do Begin s:=0; y:=y + (x[i]*x[n+1-i]); i:=i+2; End; k := 1; for i:=1 to n do k:=k*i; y:=y/k; Fyn:=y; End; begin matrica(n, a); Writeln(' ':20,'MATPICA A'); for i:=1 to n do Begin for j:=1 to n do Write(a[i,j]:8:3); writeln; End; Vector(n,a,x); Writeln(' ':20,'BEKTOP X'); for i:=1 to n do write(x[i]:8:3); writeln; Porjdok(n,a); Writeln(' ':5,'YPOR 1 CTROKI MATPICU A'); for i:=1 to n do Begin for j:=1 to n do Write(a[i,j]:8:3); writeln; End; y:=Fyn(n,x); Writeln('Rez y= ',y:10:3); readln; end. |
04.12.2012, 13:16 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я думаю, что проблему решать легче есть набраться больше информации Программирование матричных операций VBA программирование Web программирование Паскаль АВС, сортировка в одномерном массиве без функций и операций |
04.12.2012, 17:28 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Помочь, конечно, можно, но...
1. Правильно ли я понимаю, что выложенные листинги - это "пример", а само задание - на рисунке? Или наоборот? 2. Простите великодушно, но смысл пунктов 3 и 4 до меня не доходит напрочь. В чем состоит задание? Можно подробнее? |
04.12.2012, 21:26 | #4 (permalink) |
Member
Регистрация: 05.11.2012
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задание которое написано это в общем. Само задание на скрине "Вариант 50"
Начал писать программу, но не знаю как среднеарифметическое значение положительных чисел i-ой строки написать |
04.12.2012, 21:41 | #5 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
Среднее арифм. сумма всех элементов разделить на их кол-во.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
04.12.2012, 23:07 | #7 (permalink) |
Member
Регистрация: 05.11.2012
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Надо вывести, для начала матрицу, элементы которой рассчитываются по 1 формуле.
далее надо вывести на экран вектор Х, элементы которого определяются по 2 заданию. далее необходимо вывести на экран, тоже можно сказать, вектор, элементами которого будут элементы матрицы но упорядоченные по возрастанию.ну и в конце необходимо вычислить значение функции У |
05.12.2012, 09:45 | #8 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Всё, получИте и распишитесь: Код:
Program Lab5; const N=5; type matr=array[1..N, 1..N] of real; vect=array[1..N] of real; var Y:real; A:matr; X:vect; Procedure Matrica; var i,j:integer; function sign(q:integer):integer; begin if (q mod 2)=0 then sign:=1 else sign:=-1; end; begin for i:=1 to N do begin for j:=1 to N do begin A[i,j]:=sign(i+j)*(4.3-i)/Abs(0.2-i*j)/N; write(A[i,j]:8:3); end; writeln; end; writeln; end; Procedure Vector; var i,j,k:integer; s:real; begin for i:=1 to N do begin k:=0; s:=0; for j:=1 to N do if A[i,j]>0 then begin s:=s+A[i,j]; Inc(k); end; if k>0 then X[i]:=s/k else X[i]:=0; Writeln('X[',i,']= ',X[i]:0:3); end; Writeln; end; Procedure Porjadok; var i,j,k:integer; c:real; begin for j:=1 to N do for i:=1 to N-1 do for k:=1 to N-i do if A[k,j]>A[k+1,j] then begin c:=A[k,j]; A[k,j]:=A[k+1,j]; A[k+1,j]:=c; end; for i:=1 to N do begin for j:=1 to N do Write(A[i,j]:8:3); Writeln; end; Writeln; end; Procedure Fun; var Max,Min:Real; i:Integer; begin Max:=X[1]; Min:=X[1]; For i:=2 to N do begin if X[i]>Max then Max:=X[i]; if X[i]<Min then Min:=X[i]; end; Y:=(Max-Min)/2; Write('Y= ',Y:0:3); end; Begin Matrica; Vector; Porjadok; Fun; Readln End. |
|
05.12.2012, 11:02 | #9 (permalink) |
Member
Регистрация: 05.11.2012
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Не могли бы сделать так чтобы размерность N не задавалась автоматически, а мы ее задавали. И если б немного пояснили Владимир, то было бы просто отлично
|
05.12.2012, 11:35 | #10 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Program Lab5; const Nmax=10; type matr=array[1..Nmax, 1..Nmax] of real; vect=array[1..Nmax] of real; var N:Integer; Y:real; A:matr; X:vect; Procedure Matrica; var i,j:integer; function sign(q:integer):integer; begin if (q mod 2)=0 then sign:=1 else sign:=-1; end; begin for i:=1 to N do begin for j:=1 to N do begin A[i,j]:=sign(i+j)*(4.3-i)/Abs(0.2-i*j)/N; write(A[i,j]:8:3); end; writeln; end; writeln; end; Procedure Vector; var i,j,k:integer; s:real; begin for i:=1 to N do begin k:=0; s:=0; for j:=1 to N do if A[i,j]>0 then begin s:=s+A[i,j]; Inc(k); end; if k>0 then X[i]:=s/k else X[i]:=0; Writeln('X[',i,']= ',X[i]:0:3); end; Writeln; end; Procedure Porjadok; var i,j,k:integer; c:real; begin for j:=1 to N do for i:=1 to N-1 do for k:=1 to N-i do if A[k,j]>A[k+1,j] then begin c:=A[k,j]; A[k,j]:=A[k+1,j]; A[k+1,j]:=c; end; for i:=1 to N do begin for j:=1 to N do Write(A[i,j]:8:3); Writeln; end; Writeln; end; Procedure Fun; var Max,Min:Real; i:Integer; begin Max:=X[1]; Min:=X[1]; For i:=2 to N do begin if X[i]>Max then Max:=X[i]; if X[i]<Min then Min:=X[i]; end; Y:=(Max-Min)/2; Write('Y= ',Y:0:3); end; Begin Write('N= '); Readln(N); Matrica; Vector; Porjadok; Fun; Readln End. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|