Wrong Number of parametrs - Free Pascal
Формулировка задачи:
Снова прошу вашей помощи. Вот сижу с этой прогой уже много времени, и просто глаза и мозг зависли конкретно.
Итак, где я облажалась??
Ошибки следующие:
(120,9)Wrong Number of parametrs specified for call to "Dop";
(147,11)Wrong Number of parametrs specified for call to "Razl";
(148, 8) Wrong Number of parametrs specified for call to "DETERM".
По идее программа должна занулять матрицу по методу Гаусса и считать определитель.
Heelp
program recurs; const C=10; type Matrix = array[1..C,1..C] of real; var A,M: Matrix; Det: real; N,Col: integer; procedure VvSKl; var I,J: integer; begin Writeln('Write elements: '); for I:=1 to N do for J:=1 to N do Read(A[I,J]); end; procedure Rand; var I,J: integer; begin randomize; for I:=1 to N do for J:=1 to N do A[I,J]:=random(10)+1; end; procedure NatCh; var I,J,K: integer; begin K:=0; for I:=1 to N do for J:=1 to N do begin K:=K+1; A[I,J]:=K; end; end; procedure VV; var Num: integer; begin Num:=1; N:=0; While not N in [1..10] do begin Writeln('Write matrix size:' ); Readln(N); Writeln('Write number of column: '); Readln(Col); //else //Writeln('Wrong data!'); end; Writeln('Type of enter'); Write('1-your choise: '); Write(', 2-random: '); Write(', 3-natural numbers: '); while not (Num in [1..3]) do begin Readln(Num); case Num of 1: VvSKl; 2: Rand; 3: Natch; end; end; end; procedure VuV(M:Matrix); var I,J: integer; begin for I:=1 to N do Write(I:4); Readln; for I:=1 to N do begin Write(I); for J:=1 to N do Write(M[I,J]:7); Readln; end; end; function Dop(A: Matrix; var M:Matrix; var I,J:integer):real; var K,Ks,Q,Qs:integer; begin Q:=0; for K:=1 to N-1 do begin if (K=I) then Q:=1; Qs:=0; for Ks:=1 to N-1 do begin if (Ks=J) then Qs:=1; M[K,Ks]:=A[K+Q,Ks+Qs]; end; end; Dop:=M[K,Ks]; end; function Razl(A:Matrix; N:integer):real; var K,I,J:byte; M:Matrix; Alg:real; begin Alg:=0; K:=1; if (N<1) then begin Writeln('Det doesn.t exist. N=', N); end; if (N=1) then Alg:=A[1,1] else if (N=2) then Alg:=A[1,1]*A[2,2]-A[2,1]*A[1,2] else for I:=1 to N do begin Dop(A,M,N,I,1); Alg:=Alg+K*A[I,1]*Razl(M,N-1); K:=-K; end; Razl:=Alg; end; function DETERM (A:Matrix; M:Matrix; N:byte):real; var K,I,J: integer; R: real; begin for K:=1 to N do for J:=K+1 to N+1 do begin R:=M[J,K]/M[K,K]; for I:=K to N do begin M[J,I]:=M[J,I]-R*M[K,I]; end; end; VuV(M); for I:=1 to N do begin M[I,J]:=M[J,I]*A[I,I]; end; end; Begin VV; VuV(M); Writeln(Razl(A)); Det:=DETERM(A); Writeln('Determinant= ', det); Readln(); end.
Решение задачи: «Wrong Number of parametrs»
textual
Листинг программы
program laba10; uses crt; type Matrix=array[1..10,1..10] of real; Strk=array[1..10] of real; var A,B:Matrix; I,J:longint; opr:real; N,Col,S,L:integer; Vub:byte; procedure Vyvod(M:Matrix; N:integer); var I,J:integer; begin for L:=1 to N do Write(' ',L,'. '); Writeln; for I:=1 to N do begin Write(I,'. '); for j:=1 to N do write(M[I,J]:7:1,' '); writeln; end; end; procedure dop(A:Matrix; var B:Matrix; M,I,J:integer); var ki,kj,di,dj:integer; begin di:=0; for ki:=1 to m-1 do begin if (ki=i) then di:=1; dj:=0; for kj:=1 to m-1 do begin if (kj=j) then dj:=1; b[ki,kj]:=a[ki+di,kj+dj]; end; end; end; function opred(A:Matrix; N:integer):real; var I,J,St:longint; det,K:real; B:Matrix; begin det:=0; St:=col; if N=1 then det:=A[1,1] else if N=2 then det:=A[1,1]*A[2,2]-A[2,1]*A[1,2] else for i:=1 to n do begin if (i+st) mod 2=0 then k:=A[I,St] else k:=-A[I,St]; dop(A,B,N,I,St); det:=det+K*opred(B,N-1); end; opred:=det; end; function Ymnogaem(S:Strk; k:real):Strk; {a[i]:=k*a[i]} var I:byte; begin for I:=1 to N do S[I]:=K*S[I]; Ymnogaem:=S; end; function Vichitaem(S1:Strk; S2:Strk):Strk; var I:byte; begin for I:=1 to N do S1[i]:=S1[I]-S2[I]; Vichitaem:=S1; end; function G(A:Matrix):real; var I,J:integer; S:Strk; R:real; begin for j:=1 to N-1 do for i:=j+1 to n do if (a[j,j]=0) then begin S:=A[I]; A[I]:=A[J]; A[J]:=Ymnogaem(S,(-1)); end else if not (A[I,J]=0) then A[i]:=Vichitaem(A[I],Ymnogaem(A[J],A[I,J]/A[J,J])); Vyvod(A,N); R:=1; for I:=1 to N do R:=R*A[I,I]; G:=R; end; begin clrscr; writeln('Write matrix size:'); readln(N); writeln('Write number of column: '); readln(Col); Writeln('Type of enter'); Write('1-your choise: '); Write(', 2-random: '); Write(', 3-natural numbers: '); Writeln; readln(Vub); case Vub of 1:begin for i:=1 to n do for j:=1 to n do read(A[I,J]); end; 2:begin randomize; for i:=1 to n do for j:=1 to n do A[i,j]:=1*random(10)-5; end; 3:begin s:=0; for i:=1 to n do for j:=1 to n do begin inc(s); A[i,j]:=s; end; end; end; Vyvod(A,N); opr:=opred(A,N); writeln('Opredelitelb = ', opr:3:1); Writeln('<br>'); writeln(G(A):3:1); Readln(); end.
Объяснение кода листинга программы
В коде используется язык программирования Free Pascal. Типы данных и переменные:
- Matrix - массив реальных чисел размером 10x10, представленный как двумерный массив.
- Strk - массив реальных чисел размером 10.
- A, B - двумерные массивы для работы с исходной и временной матрицами соответственно.
- I, J - целочисленные переменные для обозначения строк и столбцов матрицы.
- opr - переменная для хранения результата вычисления определителя.
- N, Col, S, L - целочисленные переменные для обозначения размера матрицы, количества столбцов и номеров строк/столбцов.
- Vub - переменная типа byte для обозначения выбора типа ввода. Процедуры и функции:
- Vyvod - процедура для вывода содержимого матрицы на экран.
- dop - процедура для перестановки элементов матрицы B в соответствии с матрицей A.
- opred - функция для вычисления определителя матрицы.
- Ymnogaem - функция для умножения элементов матрицы на одно и то же число k.
- Vichitaem - функция для вычитания матрицы S2 из матрицы S1.
- G - функция для поиска наибольшего элемента в матрице и вычисления определителя. Постановка задачи:
- Ввод размера матрицы N и количества столбцов Col.
- Ввод типа ввода (1 - ввод с клавиатуры, 2 - случайный ввод, 3 - ввод последовательности натуральных чисел).
- Ввод исходных данных в матрицу A.
- Вычисление определителя матрицы opred.
- Вывод содержимого матрицы A и определителя opred.
- Вычисление значения функции G, представляющей собой сумму произведений главных диагоналей матрицы A.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д