0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 4
1

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

30.10.2015, 10:23. Показов 2550. Ответов 6
Метки нет (Все метки)

Делал лабораторную, всё как обычно, но вдруг встретился с ранее не известной мне ошибкой в PascalABC
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
//  (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;
  factba, factdc, factmk: BigInteger;
  i, j: byte;
 
//
function fact(n:integer):BigInteger;
var r: BigInteger;
    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: BigInteger; D: BigInteger; var res: BigInteger);
  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, res);
 
  readln;
end.
Эту ошибку он выдаёт в 42 строке.
После удаления ( для проверки) данного условия, ошибка находится и в последующих.
Всю ночь на неё убил

Как это исправить? Помогите пожалуйста

P.S. ещё нужно с типами данных в desc разобраться
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2015, 10:23
Ответы с готовыми решениями:

Как исправить ошибку "Несколько подпрограмм могут быть вызваны"?
задание: превратить заданную матрицу А по правилу: если след матрицы меньше 1, то все строки с...

Ошибка "Несколько подпрограмм могут быть вызваны"
Здравствуйте! Помогите, пожалуйста, решить эту проблему.. program ррр; const Max_M = 5;...

Создать последовательность цифр, перед какой может быть знак "+" или "-", в конце пропуск.
Используя только ввод с клавы (процедуру Read(c), где с-БУКВЕНАЯ переменная) создать...

Ошибка "Тип параметра или возвращаемого значения не может быть описанием записи"
Есть программа, но в ней ошибка, помогите исправить. Program zadacha8; Uses Crt; procedure...

6
Эксперт Pascal/Delphi
6804 / 4563 / 4817
Регистрация: 05.06.2014
Сообщений: 22,438
30.10.2015, 19:41 2
А так? В алгоритм не всматривался.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
//  (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.
1
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 4
30.10.2015, 21:48  [ТС] 3
В Longint не помещается значение факториала к примеру 90
Но большое вам спасибо!
0
Эксперт Pascal/Delphi
6804 / 4563 / 4817
Регистрация: 05.06.2014
Сообщений: 22,438
30.10.2015, 22:51 4
Mamontov, если я правильно помню, в pabc нет типа BigInteger. Поэтому и поправил на LongInt.
1
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 4
30.10.2015, 23:27  [ТС] 5
ZX Spectrum-128, я про BigInteger как раз вычитал в справке к PascalABC
0
Эксперт Pascal/Delphi
6804 / 4563 / 4817
Регистрация: 05.06.2014
Сообщений: 22,438
30.10.2015, 23:58 6
Mamontov, наверное, в pabc.net?
1
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 4
31.10.2015, 00:01  [ТС] 7
ZX Spectrum-128, вроде да
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2015, 00:01
Помогаю со студенческими работами здесь

Написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща", "чу", "щу". Исправить ошибки
дан текст.написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща",...

Решение заданий типа "Array","Matrix","String","File","Text"""
большая просьба помочь решить где-то около 35-40 (из 100) задач (мне не понятных) типа массив и...

Из слова "клоун" путем "вырезок" и "склеек" его букв получить слова "уклон","кулон" и "колун"
Из слова "клоун" путем "вырезок" и "склеек" его букв получить слова "уклон","кулон" и...

Несколько подпрограмм могут быть вызваны
Выдает такую ошибку при компиляции программы const M: array of real = (0.1, 5.6, 0.8, 2.4,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru