Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > >
Восстановить пароль Регистрация
 
 
STL1te
Форумчанин
5 / 4 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 21:39     Ошибка: Not enough actual parameters   #1
при компиляции выдаёт ошибку "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;
AdAgent
Объявления
17.01.2010, 21:39    Ошибка: Not enough actual parameters
Snoopy
Форумчанин
1908 / 1079 / 21
Регистрация: 06.12.2008
Сообщений: 2,810
17.01.2010, 21:42     Ошибка: Not enough actual parameters   #2
Данная фраза говорит о том, что Вы не передаете в функцию соответствующих параметров
представьте весь код
STL1te
Форумчанин
5 / 4 / 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
Форумчанин
1908 / 1079 / 21
Регистрация: 06.12.2008
Сообщений: 2,810
17.01.2010, 22:07     Ошибка: Not enough actual parameters   #4
еще задание напишите
STL1te
Форумчанин
5 / 4 / 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;
AdAgent
Объявления
17.01.2010, 22:12    Ошибка: Not enough actual parameters
Страдалецъ
Тимуровец
440 / 284 / 4
Регистрация: 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
Форумчанин
5 / 4 / 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.
Страдалецъ
Тимуровец
440 / 284 / 4
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:46     Ошибка: Not enough actual parameters   #8
Оригинально. Не использовать встроенные средства языка - это не только неправильно, но и вредно. Одно дело - не знать об этом, другое умышленно избегать этого. В результате вырабатывается привычка постоянно изобретать велосипед и сильно увеличивает время написания кода.
STL1te
Форумчанин
5 / 4 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 22:47  [ТС]     Ошибка: Not enough actual parameters   #9
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Оригинально. Не использовать встроенные средства языка - это не только неправильно, но и вредно. Одно дело - не знать об этом, другое умышленно избегать этого. В результате вырабатывается привычка постоянно изобретать велосипед и сильно увеличивает время написания кода.
согласен, но... препод старой закалки и с ней не поспоришь..(
Страдалецъ
Тимуровец
440 / 284 / 4
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:47     Ошибка: Not enough actual parameters   #10
Зачем-же вы передаете в качестве параметра массив, если он является у вас глобальной переменной и виден из любой процедуры внутри этого модуля?
STL1te
Форумчанин
5 / 4 / 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.
Страдалецъ
Тимуровец
440 / 284 / 4
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 23:07     Ошибка: Not enough actual parameters   #12
Можете и n тоже по той-же причине исключить из параметров.
STL1te
Форумчанин
5 / 4 / 0
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 23:12  [ТС]     Ошибка: Not enough actual parameters   #13
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Можете и n тоже по той-же причине исключить из параметров.
логично... но какие параметры мне тогда передавать в процедуры?
Страдалецъ
Тимуровец
440 / 284 / 4
Регистрация: 10.09.2009
Сообщений: 963
18.01.2010, 00:20     Ошибка: Not enough actual parameters   #14
Если в этом нет необходимости, то зачем перегружать код?
STL1te
Форумчанин
5 / 4 / 0
Регистрация: 08.12.2009
Сообщений: 105
18.01.2010, 11:06  [ТС]     Ошибка: Not enough actual parameters   #15
требует препод..
Страдалецъ
Тимуровец
440 / 284 / 4
Регистрация: 10.09.2009
Сообщений: 963
18.01.2010, 13:56     Ошибка: Not enough actual parameters   #16
Тогда перенесите весь Var блок после всех процедур/функций и передавайте в них параметры.
Но это глупо.
Оксана68
Новичок
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 3
14.05.2011, 14:45     Ошибка: Not enough actual parameters   #17
У меня показывает ошибку [Ошибка] Unit2.pas(105): Not enough actual parameters
Что делать уже и не знаю, задание такое у меня происходит импорт данных из DBGrid в Word.
Код 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
procedure TForm2.Button6Click(Sender: TObject);
const
  TCount = 3;
 
type
  TRec = record
    FIO: string;
    NaimTem: string;
    NaimFond: string;
  end;
 
var
  T: array[0..TCount] of TRec;
  Nn: Integer;
  i: Integer;
 
begin
  i := 0;
  while not Table1.Eof do
  begin
    T[i].FIO := Table1FIO.AsString;
    T[i].NaimTem := Table1Naimtem.AsString;
    T[i].NaimFond := Table1Naimfond.AsString;
    Table1.Next;
 
  end;
 
  PrintN()
end;/
/ после этого пишет ошибку.
Подскажите что делать?
i8085
Форумчанин
690 / 490 / 8
Регистрация: 11.09.2009
Сообщений: 1,477
14.05.2011, 17:06     Ошибка: Not enough actual parameters   #18
Цитата Сообщение от Оксана68 Посмотреть сообщение
Ошибка Not enough actual parameters
PrintN()
end;// после этого пишет ошибку.
Подскажите что делать?
Общий подход такой:
Смотрите, как объявлена функция или процедура (в вашем случае - PrintN). Параметры вызова в скобках должны быть те же, что в объявлении.
Оксана68
Новичок
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 3
14.05.2011, 17:08     Ошибка: Not enough actual parameters   #19
Код 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
procedure PrintN(DDE1: TDdeClientConv; Data: TData);
 
implementation
 
procedure PrintN;
var
  S: string;
  i: integer;
  Sum: double;  // итоговая сумма
  Tv, Ss: PChar;
  Nn: Integer;
begin
 S:=GetCurrentDir+'\Накладная.doc'; { имя открываемого документа }
 DDE1.OpenLink; { устанавливаем связь }
 Tv:=StrAlloc(20000); Ss:=StrAlloc(300); { выделяем память }
  { даем команду открыть документ и установить курсор в начало документа }
 StrPCopy(Tv, '[FileOpen "'+S+'"][StartOfDocument]');
// S := NNakl.Text; { номер накладной }
  { записываем в позицию Num номер накладной }
 StrCat(Tv, StrPCopy(SS, '[EditBookmark .Name = "Num", .Goto][Insert "'+S+'"]'+
 '[EditBookmark .Name = "Table", .Goto]')); { и переходим к заполнению таблицы }
  { передаем данные в Word }
 if not DDE1.ExecuteMacro(Tv, false) then
   begin { сообщаем об ошибке и выход }
    MessageDlg('Ошибка связи с Microsoft Word.', mtError, [mbOk], 0);
    StrDispose(Tv); StrDispose(Ss);
    exit;
   end;
ЧТо именно из этого должно быть написано?

 Комментарий модератора Dekio
Сообщение изменено модератором.
Для кода программ есть специальные теги в редакторе сообщений.
i8085
Форумчанин
690 / 490 / 8
Регистрация: 11.09.2009
Сообщений: 1,477
14.05.2011, 17:17     Ошибка: Not enough actual parameters   #20
Объявлено:
procedure PrintN(DDE1: TDdeClientConv; Data: TData);

При вызове процедуре должны быть переданы два параметра:
DDE1 типа TDdeClientConv
Data типа TData

Например, так:

Код Delphi
1
2
3
4
5
6
7
var
Param1: TDdeClientConv;
Param2: TData;
...
Param1:= ...;
Param2:= ...;
PrintN(Param1, Param2);
Yandex
Объявления
14.05.2011, 17:17    Ошибка: Not enough actual parameters
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 15:55. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.