Форум программистов, компьютерный форум CyberForum.ru

Delphi

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 121, средняя оценка - 4.76
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
#1

Ошибка: Not enough actual parameters - Delphi

17.01.2010, 21:39. Просмотров 15995. Ответов 22
Метки нет (Все метки)

при компиляции выдаёт ошибку "Not enough actual parameters" в функции перед x[i,j], подскажите как исправить
вот код функции
Delphi
1
2
3
4
5
6
function sumstr (x:matrix; i,n:integer):integer;
var j:integer;
begin
  for j:=1 to n do
    sumstr:=sumstr+x[i,j];
end;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Snoopy
1912 / 1069 / 90
Регистрация: 06.12.2008
Сообщений: 2,802
17.01.2010, 21:42     Ошибка: Not enough actual parameters #2
Данная фраза говорит о том, что Вы не передаете в функцию соответствующих параметров
представьте весь код
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 21:44  [ТС]     Ошибка: Not enough actual parameters #3
Delphi
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
program magic_sqr;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
type
matrix=array[1..100,1..100] of integer;
 
function sumstr (var x:matrix; i,n:integer):integer;
var j:integer;
begin
  for j:=1 to n do
    sumstr:=sumstr+x[i,j];
end;
var i,j,n:integer;
    matr:matrix;
 
procedure Input (n:integer; var x:matrix);
var i,j:integer;
begin
writeln ('Введите элементы массива');
writeln;
for i:=1 to n do
  for j:=1 to n do
    begin
      write ('a[',i,',',j,'] = ');
      readln (x[i,j]);
      writeln;
    end;
end;
 
procedure Output (n:integer; x:matrix);
var i,j:integer;
begin
  writeln ('Исходная матрица');
  writeln;
    for i:=1 to n do
    begin
      for j:=1 to n do
        write (x[i,j],' ');
        writeln
    end;
end;
 
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
  writeln ('Введите n');
  readln (n);
Input (n, matr);
Output (n, matr);
writeln;
for i:=1 to n do
  writeln (sumstr (matr,i,n,));
readln;
end.
Snoopy
1912 / 1069 / 90
Регистрация: 06.12.2008
Сообщений: 2,802
17.01.2010, 22:07     Ошибка: Not enough actual parameters #4
еще задание напишите
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 22:12  [ТС]     Ошибка: Not enough actual parameters #5
уже не надо) разобрался)) заменил на это
Delphi
1
2
3
4
5
6
7
8
function sumstr (x:matrix; i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+x[i,j];
  sumstr:=res;
end;
Страдалецъ
Тимуровец
443 / 286 / 14
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:31     Ошибка: Not enough actual parameters #6
Правильнее так:
Delphi
1
2
3
4
5
6
7
function sumstr (x:matrix; i,n:integer):integer;
var j: integer;
begin
 Result := 0;
 for j := 1 to n 
 do Result := Result + x[i,j];
end;
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 22:43  [ТС]     Ошибка: Not enough actual parameters #7
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Правильнее так:
Delphi
1
2
3
4
5
6
7
function sumstr (x:matrix; i,n:integer):integer;
var j: integer;
begin
 Result := 0;
 for j := 1 to n 
 do Result := Result + x[i,j];
end;
просто у нас препод не любит такую запись, с Result'ом))

Добавлено через 3 минуты
Цитата Сообщение от Snoopy Посмотреть сообщение
еще задание напишите
задание: над определить является ли заданная матрица магическим квадратом или нет.

Добавлено через 1 минуту
вот готовый код:

Delphi
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
program magic_sqr;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
type
matrix=array[1..100,1..100] of integer;
 
var i,n:integer;
    matr:matrix;
    IsMagic:boolean;
 
function sumstr (x:matrix; i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+x[i,j];
  sumstr:=res;
end;
 
function sumcol (x:matrix; j,n:integer):integer;
var i,res:integer;
begin
res:=0;
  for i:=1 to n do
    res:=res+x[i,j];
  sumcol:=res;
end;
 
procedure Input (n:integer; var x:matrix);
var i,j:integer;
begin
writeln;
writeln ('Введите элементы массива');
writeln;
for i:=1 to n do
  for j:=1 to n do
    begin
      write ('a[',i,',',j,'] = ');
      readln (x[i,j]);
      writeln;
    end;
end;
 
procedure Output (n:integer; x:matrix);
var i,j:integer;
begin
  writeln ('Исходная матрица:');
   for i:=1 to n do
    begin
      for j:=1 to n do
        write (x[i,j],' ');
        writeln
    end;
end;
 
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
  writeln ('Введите n');
  readln (n);
Input (n, matr);
Output (n, matr);
writeln;
IsMagic:=false;
for i:=1 to n do
  if sumstr (matr,i,n) = sumcol (matr,i,n) then
    IsMagic:=true
  else break;
if IsMagic then
  writeln ('Квадрат - магический!')
else
  writeln ('Квадрат - не магический!');
readln;
end.
Страдалецъ
Тимуровец
443 / 286 / 14
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:46     Ошибка: Not enough actual parameters #8
Оригинально. Не использовать встроенные средства языка - это не только неправильно, но и вредно. Одно дело - не знать об этом, другое умышленно избегать этого. В результате вырабатывается привычка постоянно изобретать велосипед и сильно увеличивает время написания кода.
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 22:47  [ТС]     Ошибка: Not enough actual parameters #9
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Оригинально. Не использовать встроенные средства языка - это не только неправильно, но и вредно. Одно дело - не знать об этом, другое умышленно избегать этого. В результате вырабатывается привычка постоянно изобретать велосипед и сильно увеличивает время написания кода.
согласен, но... препод старой закалки и с ней не поспоришь..(
Страдалецъ
Тимуровец
443 / 286 / 14
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:47     Ошибка: Not enough actual parameters #10
Зачем-же вы передаете в качестве параметра массив, если он является у вас глобальной переменной и виден из любой процедуры внутри этого модуля?
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 23:00  [ТС]     Ошибка: Not enough actual parameters #11
т.е я могу вместо
Delphi
1
2
3
4
5
6
7
8
function sumstr (x:matrix; i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+x[i,j];
  sumstr:=res;
end;
писать это?

Delphi
1
2
3
4
5
6
7
8
function sumstr (i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+matr[i,j];
  sumstr:=res;
end;
Добавлено через 8 минут
проверил.. и правда... списал бы на то, что я ток на первом курсе, но я должен был это знать...)

тогда код принимает такой вид:
Delphi
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
program magic_sqr;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
type
matrix=array[1..100,1..100] of integer;
 
var i,n:integer;
    matr:matrix;
    IsMagic:boolean;
 
function sumstr (i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+matr[i,j];
  sumstr:=res;
end;
 
function sumcol (j,n:integer):integer;
var i,res:integer;
begin
res:=0;
  for i:=1 to n do
    res:=res+matr[i,j];
  sumcol:=res;
end;
 
procedure Input (n:integer);
var i,j:integer;
begin
writeln;
writeln ('Введите элементы массива');
writeln;
for i:=1 to n do
  for j:=1 to n do
    begin
      write ('a[',i,',',j,'] = ');
      readln (matr[i,j]);
      writeln;
    end;
end;
 
procedure Output (n:integer);
var i,j:integer;
begin
  writeln ('Исходная матрица:');
   for i:=1 to n do
    begin
      for j:=1 to n do
        write (matr[i,j],' ');
        writeln
    end;
end;
 
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
  writeln ('Введите n');
  readln (n);
Input (n);
Output (n);
writeln;
IsMagic:=false;
for i:=1 to n do
  if sumstr (i,n) = sumcol (i,n) then
    IsMagic:=true
  else break;
if IsMagic then
  writeln ('Квадрат - магический!')
else
  writeln ('Квадрат - не магический!');
readln;
end.
Страдалецъ
Тимуровец
443 / 286 / 14
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 23:07     Ошибка: Not enough actual parameters #12
Можете и n тоже по той-же причине исключить из параметров.
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 23:12  [ТС]     Ошибка: Not enough actual parameters #13
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Можете и n тоже по той-же причине исключить из параметров.
логично... но какие параметры мне тогда передавать в процедуры?
Страдалецъ
Тимуровец
443 / 286 / 14
Регистрация: 10.09.2009
Сообщений: 963
18.01.2010, 00:20     Ошибка: Not enough actual parameters #14
Если в этом нет необходимости, то зачем перегружать код?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2010, 11:06     Ошибка: Not enough actual parameters
Еще ссылки по теме:
Ошибка Not enough actual parameters Delphi
Delphi Ошибка E2035 Not enough actual parameters
Delphi Ошибка: Not enogth actual parameters
Ошибка [Error] Unit1.pas(69): Not enough actual parameters Delphi
Delphi E2035 Not enough actual parameters. не могу понять в чем ошибка

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

Или воспользуйтесь поиском по форуму:
STL1te
7 / 6 / 0
Регистрация: 08.12.2009
Сообщений: 105
18.01.2010, 11:06  [ТС]     Ошибка: Not enough actual parameters #15
требует препод..
Yandex
Объявления
18.01.2010, 11:06     Ошибка: Not enough actual parameters
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru