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