Wrong Number of parametrs - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Снова прошу вашей помощи. Вот сижу с этой прогой уже много времени, и просто глаза и мозг зависли конкретно. Итак, где я облажалась??
Листинг программы
  1. program recurs;
  2. const
  3. C=10;
  4. type
  5. Matrix = array[1..C,1..C] of real;
  6. var
  7. A,M: Matrix;
  8. Det: real;
  9. N,Col: integer;
  10.  
  11. procedure VvSKl;
  12. var I,J: integer;
  13. begin
  14. Writeln('Write elements: ');
  15. for I:=1 to N do
  16. for J:=1 to N do
  17. Read(A[I,J]);
  18. end;
  19. procedure Rand;
  20. var I,J: integer;
  21. begin
  22. randomize;
  23. for I:=1 to N do
  24. for J:=1 to N do
  25. A[I,J]:=random(10)+1;
  26. end;
  27. procedure NatCh;
  28. var I,J,K: integer;
  29. begin
  30. K:=0;
  31. for I:=1 to N do
  32. for J:=1 to N do begin
  33. K:=K+1;
  34. A[I,J]:=K;
  35. end;
  36. end;
  37. procedure VV;
  38. var Num: integer;
  39. begin
  40. Num:=1;
  41. N:=0;
  42. While not N in [1..10] do
  43. begin
  44. Writeln('Write matrix size:' );
  45. Readln(N);
  46. Writeln('Write number of column: ');
  47. Readln(Col);
  48. //else
  49. //Writeln('Wrong data!');
  50. end;
  51. Writeln('Type of enter');
  52. Write('1-your choise: ');
  53. Write(', 2-random: ');
  54. Write(', 3-natural numbers: ');
  55. while not (Num in [1..3]) do
  56. begin
  57. Readln(Num);
  58. case Num of
  59. 1: VvSKl;
  60. 2: Rand;
  61. 3: Natch;
  62. end;
  63. end;
  64. end;
  65. procedure VuV(M:Matrix);
  66. var I,J: integer;
  67. begin
  68. for I:=1 to N do
  69. Write(I:4);
  70. Readln;
  71. for I:=1 to N do
  72. begin
  73. Write(I);
  74. for J:=1 to N do
  75. Write(M[I,J]:7);
  76. Readln;
  77. end;
  78. end;
  79. function Dop(A: Matrix; var M:Matrix; var I,J:integer):real;
  80. var K,Ks,Q,Qs:integer;
  81. begin
  82. Q:=0;
  83. for K:=1 to N-1 do begin
  84. if (K=I) then Q:=1;
  85. Qs:=0;
  86. for Ks:=1 to N-1 do begin
  87. if (Ks=J) then Qs:=1;
  88. M[K,Ks]:=A[K+Q,Ks+Qs];
  89. end;
  90. end;
  91. Dop:=M[K,Ks];
  92. end;
  93. function Razl(A:Matrix; N:integer):real;
  94. var K,I,J:byte;
  95. M:Matrix;
  96. Alg:real;
  97. begin
  98. Alg:=0;
  99. K:=1;
  100. if (N<1) then begin
  101. Writeln('Det doesn.t exist. N=', N);
  102. end;
  103. if (N=1) then Alg:=A[1,1]
  104. else
  105. if (N=2) then
  106. Alg:=A[1,1]*A[2,2]-A[2,1]*A[1,2]
  107. else
  108. for I:=1 to N do
  109. begin
  110. Dop(A,M,N,I,1);
  111. Alg:=Alg+K*A[I,1]*Razl(M,N-1);
  112. K:=-K;
  113. end;
  114. Razl:=Alg;
  115. end;
  116. function DETERM (A:Matrix; M:Matrix; N:byte):real;
  117. var K,I,J: integer;
  118. R: real;
  119. begin
  120. for K:=1 to N do
  121. for J:=K+1 to N+1 do begin
  122. R:=M[J,K]/M[K,K];
  123. for I:=K to N do begin
  124. M[J,I]:=M[J,I]-R*M[K,I];
  125. end;
  126. end;
  127. VuV(M);
  128. for I:=1 to N do begin
  129. M[I,J]:=M[J,I]*A[I,I];
  130. end;
  131. end;
  132. Begin
  133. VV;
  134. VuV(M);
  135. Writeln(Razl(A));
  136. Det:=DETERM(A);
  137. Writeln('Determinant= ', det);
  138. Readln();
  139. end.
Ошибки следующие: (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

Решение задачи: «Wrong Number of parametrs»

textual
Листинг программы
  1. program laba10;
  2. uses crt;
  3. type Matrix=array[1..10,1..10] of real;
  4.      Strk=array[1..10] of real;
  5. var  A,B:Matrix;
  6.      I,J:longint;
  7.      opr:real;
  8.      N,Col,S,L:integer;
  9.      Vub:byte;
  10.  
  11. procedure Vyvod(M:Matrix; N:integer);
  12. var I,J:integer;
  13. begin
  14. for L:=1 to N do
  15.   Write('      ',L,'. ');
  16.   Writeln;
  17. for I:=1 to N do
  18. begin
  19.   Write(I,'.  ');
  20.   for j:=1 to N do
  21.     write(M[I,J]:7:1,' ');
  22.     writeln;
  23.   end;
  24. end;
  25.  
  26. procedure dop(A:Matrix; var B:Matrix; M,I,J:integer);
  27.   var ki,kj,di,dj:integer;
  28.   begin
  29.     di:=0;
  30.     for ki:=1 to m-1 do
  31.     begin
  32.       if (ki=i) then di:=1;
  33.       dj:=0;
  34.       for kj:=1 to m-1 do
  35.       begin
  36.         if (kj=j) then dj:=1;
  37.         b[ki,kj]:=a[ki+di,kj+dj];
  38.       end;
  39.     end;
  40.   end;
  41.  
  42. function opred(A:Matrix; N:integer):real;
  43. var I,J,St:longint;
  44.     det,K:real;
  45.     B:Matrix;
  46. begin
  47.   det:=0;
  48.   St:=col;
  49.   if N=1 then det:=A[1,1]
  50.     else if N=2
  51.       then det:=A[1,1]*A[2,2]-A[2,1]*A[1,2]
  52.         else
  53.   for i:=1 to n do
  54.   begin
  55.     if (i+st) mod 2=0 then k:=A[I,St]
  56.       else k:=-A[I,St];
  57.         dop(A,B,N,I,St);
  58.         det:=det+K*opred(B,N-1);
  59.   end;
  60. opred:=det;
  61. end;
  62.  
  63. function Ymnogaem(S:Strk; k:real):Strk;         {a[i]:=k*a[i]}
  64. var I:byte;
  65. begin
  66.   for I:=1 to N do
  67.     S[I]:=K*S[I];
  68.     Ymnogaem:=S;
  69. end;
  70.  
  71. function Vichitaem(S1:Strk; S2:Strk):Strk;
  72. var I:byte;
  73. begin
  74.   for I:=1 to N do
  75.     S1[i]:=S1[I]-S2[I];
  76.     Vichitaem:=S1;
  77. end;
  78.  
  79. function G(A:Matrix):real;
  80. var I,J:integer;
  81.     S:Strk;
  82.     R:real;
  83. begin
  84. for j:=1 to N-1 do
  85.   for i:=j+1 to n do
  86.     if (a[j,j]=0) then
  87.      begin
  88.        S:=A[I];
  89.        A[I]:=A[J];
  90.        A[J]:=Ymnogaem(S,(-1));
  91.      end
  92.     else
  93.       if not (A[I,J]=0) then
  94.         A[i]:=Vichitaem(A[I],Ymnogaem(A[J],A[I,J]/A[J,J]));
  95. Vyvod(A,N);
  96. R:=1;
  97. for I:=1 to N do
  98.   R:=R*A[I,I];
  99.   G:=R;
  100. end;
  101.  
  102.  
  103. begin
  104. clrscr;
  105.   writeln('Write matrix size:');
  106.   readln(N);
  107.   writeln('Write number of column: ');
  108.   readln(Col);
  109.   Writeln('Type of enter');
  110.      Write('1-your choise:  ');
  111.      Write(', 2-random: ');
  112.      Write(', 3-natural numbers: ');
  113.      Writeln;
  114.   readln(Vub);
  115.   case Vub of
  116.     1:begin
  117.       for i:=1 to n do
  118.         for j:=1 to n do
  119.         read(A[I,J]);
  120.       end;
  121.     2:begin
  122.       randomize;
  123.       for i:=1 to n do
  124.         for j:=1 to n do
  125.         A[i,j]:=1*random(10)-5;
  126.       end;
  127.     3:begin
  128.       s:=0;
  129.       for i:=1 to n do
  130.         for j:=1 to n do begin
  131.           inc(s);
  132.          A[i,j]:=s;
  133.         end;
  134.       end;
  135.   end;
  136.   Vyvod(A,N);
  137.   opr:=opred(A,N);
  138.   writeln('Opredelitelb = ', opr:3:1);
  139.   Writeln('<br>');
  140.   writeln(G(A):3:1);
  141.   Readln();
  142. 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы