Wrong Number of parametrs - Free Pascal

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

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

Снова прошу вашей помощи. Вот сижу с этой прогой уже много времени, и просто глаза и мозг зависли конкретно. Итак, где я облажалась??
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.
Ошибки следующие: (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
Листинг программы
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.

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


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

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

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