Ошибка "Несколько подпрограмм могут быть вызваны" - Pascal ABC

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

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

Делал лабораторную, всё как обычно, но вдруг встретился с ранее не известной мне ошибкой в PascalABC
Эту ошибку он выдаёт в 42 строке. После удаления ( для проверки) данного условия, ошибка находится и в последующих. Всю ночь на неё убил Как это исправить? Помогите пожалуйста P.S. ещё нужно с типами данных в desc разобраться

Решение задачи: «Ошибка "Несколько подпрограмм могут быть вызваны"»

textual
Листинг программы
//  (ba)!x^2+2*dc)!x+(mk)!=0
//  z 6-6  w 11-11  v 12-12
 
program lab6zachas;
 
uses
  crt;
 
const
  ZA = 6;
  WA = 11;
  VA = 12;
  Y = 1;
 
var
  z: array [1..ZA, 1..ZA] of integer;
  w: array [1..WA, 1..WA] of integer;
  v: array [1..VA, 1..VA] of integer;
  
  a, b, c, d, k, m, x1, x2: integer;
  rez, factba, factdc, factmk: LongInt;
  i, j: byte;
 
//
function fact(n: integer): LongInt;
var
  r: LongInt;
  i: integer;
begin
  r := 1;
  if n = 1 then fact := 1
  else
    for i := 2 to n do
    begin
      r := r * i;
    end;
  fact := r;
end;
 
//
procedure xnadva(g, h, j: LongInt; var res: LongInt);
var
  D: LongInt;
begin
  if (g = 0) then
  begin
    writeln('Не квадратное уравнение.');
    halt;
  end;
  D := h * h - 4 * g * j;
  if (D = 0) then
  begin
    writeln('x = ', -h / 2.0 / g);
    halt;
  end;
  if (D > 0) then
  begin
    writeln('x1 = ', (-h + Sqrt(D)) / 2.0 / g);
    writeln('x2 = ', (-h - Sqrt(D)) / 2.0 / g);
  end
   else
  begin
    writeln('x1 = (', -h / 2.0 / g, ',', Sqrt(-D) / 2.0 / g, ')');
    writeln('x2 = (', -h / 2.0 / g, ',', -Sqrt(-D) / 2.0 / g, ')');
  end;
end;
 
 
begin
  randomize;
  a := 0;
  b := 0;
  
  //Z
  for i := 1 to ZA do
  begin
    for j := 1 to ZA do
    begin
      z[i, j] := random(Y) - random(Y);
      write(z[i, j]:5);
    end;
    writeln;
  end;
  
  writeln;
  writeln;
  
  //W
  for i := 1 to WA do
  begin
    for j := 1 to WA do
    begin
      w[i, j] := random(Y) - random(Y);
      write(w[i, j]:5);
    end;
    writeln;
  end;
  
  writeln;
  writeln;
  
  //V
  for i := 1 to VA do
  begin
    for j := 1 to VA do
    begin
      v[i, j] := random(Y) - random(Y);
      write(v[i, j]:5);
    end;
    writeln;
  end;
  
  writeln;
  writeln;
  
  //Zmod
  for i := 1 to ZA do
  begin
    write(' ':5 * (ZA - i + 1));
    for j := ZA - i + 2 to ZA do
    begin
      write(z[i, j]:5);
      a := a + 1;
      b := b + abs(z[i, j]);
    end;
    writeln();
  end;
  
  writeln(a); // Вывод кол-ва
  writeln(b); // Вывод суммы модулей
  
    //Wmod
  for i := 1 to WA do
  begin
    write(' ':5 * (WA - i + 1));
    for j := WA - i + 2 to WA do
    begin
      write(w[i, j]:5);
      c := c + 1;
      d := d + abs(w[i, j]);
    end;
    writeln();
  end;
  
  writeln(c); // Вывод кол-ва
  writeln(d); // Вывод суммы модулей
  
    //Vmod
  for i := 1 to VA do
  begin
    write(' ':5 * (VA - i + 1));
    for j := VA - i + 2 to VA do
    begin
      write(v[i, j]:5);
      m := m + 1;
      k := k + abs(v[i, j]);
    end;
    writeln();
  end;
  
  writeln(m); // Вывод кол-ва
  writeln(k); // Вывод суммы модулей
  
    // (ba)! x^2 + 2(dc)! x + (mk)! = 0
    // (ba)! = factba
    // (dc)! = factdc
    // (mk)! = factmk
  
  factba := fact(a * b);
  factdc := fact(d * c);
  factmk := fact(m * k);
  
  writeln(factba);
  writeln;
  writeln(factdc);
  writeln;
  writeln(factmk);
  
  xnadva(factba, factdc, factmk, rez);
  
  readln;
end.

Объяснение кода листинга программы

Этот код написан на языке Pascal ABC и предназначен для решения системы уравнений. Он использует функцию fact для вычисления факториала числа. В программе используются три массива z, w и v для хранения чисел от 1 до 6. После генерации случайных чисел для каждого элемента массива, программа вычисляет сумму модулей каждого элемента и выводит результаты. Затем программа вычисляет факториалы a, b и c с помощью функции fact, а затем вызывает процедуру xnadva с этими значениями, чтобы найти два корня уравнения. Наконец, программа выводит результаты вычислений.

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


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

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

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