procedure v1(mas1,mas2: array of integer; k,m,n: integer);
begin
...
end;
procedure v2(mas1,mas2: array of integer; k,m,n: integer);
begin
...
end;
procedure v3(mas1,mas2: array of integer; k,m,n: integer);
begin
...
end;
procedure variant(v: integer);
begin
case v=1 of true: v1(mas1,mas2: array of integer; k,m,n: integer); end;
case v=2 of true: v2(mas1,mas2: array of integer; k,m,n: integer); end;
case v=3 of true: v3(mas1,mas2: array of integer; k,m,n: integer); end;
end;
Другие языки программирования и технологии
Turbo Pascal, не компилируется фрагмент кода с вызовом процедур, где ошибка?
Нагородили.. .
case v of
1: v1(mas1,mas2,k,m,n);
2: v2(mas1,mas2,k,m,n);
3: v3(mas1,mas2,k,m,n);
end;
Можно сделать еще короче и красивее с использованием процедурного типа, но нужно будет слишком много объяснений. Впрочем, напишу:
{$F+}
procedure v1(mas1,mas2: array of integer; k,m,n: integer); begin ...end;
procedure v2(mas1,mas2: array of integer; k,m,n: integer); begin ...end;
procedure v3(mas1,mas2: array of integer; k,m,n: integer); begin ...end;
{$F-}
type proc=procedure(mas1,mas2: array of integer; k,m,n: integer);
const pro:array[1..3]of proc=(v1,v2,v3);
...
begin
...
pro[v](m1,m2,k1,k2,k3);
...
end.
case v of
1: v1(mas1,mas2,k,m,n);
2: v2(mas1,mas2,k,m,n);
3: v3(mas1,mas2,k,m,n);
end;
Можно сделать еще короче и красивее с использованием процедурного типа, но нужно будет слишком много объяснений. Впрочем, напишу:
{$F+}
procedure v1(mas1,mas2: array of integer; k,m,n: integer); begin ...end;
procedure v2(mas1,mas2: array of integer; k,m,n: integer); begin ...end;
procedure v3(mas1,mas2: array of integer; k,m,n: integer); begin ...end;
{$F-}
type proc=procedure(mas1,mas2: array of integer; k,m,n: integer);
const pro:array[1..3]of proc=(v1,v2,v3);
...
begin
...
pro[v](m1,m2,k1,k2,k3);
...
end.
вообще то переменные описываются перед вызовом процедур
procedure variant(v: integer);
var
mas1,mas2: array [0..1] of integer;
k,m,n: integer
begin
case v=1 of true: v1(mas1,mas2, k,m,n); end;
case v=2 of true: v2(mas1,mas2, k,m,n); end;
case v=3 of true: v3(mas1,mas2, k,m,n); end;
end;
и, если мне не изменяет память, надо каждую переменную в процедуре описывать отдельно
procedure v(mas1: array[0..1] of integer; mas2[0..1]: array of integer; k: integer; m: integer;n: integer);
begin
...
end;
а проще объяви массивы до начала программы и используй их как public
так же можно создать класс, где есть все эти переменные и вызывать процедуры только с одной переменной (нашего класса)
procedure variant(v: integer);
var
mas1,mas2: array [0..1] of integer;
k,m,n: integer
begin
case v=1 of true: v1(mas1,mas2, k,m,n); end;
case v=2 of true: v2(mas1,mas2, k,m,n); end;
case v=3 of true: v3(mas1,mas2, k,m,n); end;
end;
и, если мне не изменяет память, надо каждую переменную в процедуре описывать отдельно
procedure v(mas1: array[0..1] of integer; mas2[0..1]: array of integer; k: integer; m: integer;n: integer);
begin
...
end;
а проще объяви массивы до начала программы и используй их как public
так же можно создать класс, где есть все эти переменные и вызывать процедуры только с одной переменной (нашего класса)
Игорь Игорь
Все массивы и переменные объявлены до начала программы и до начала процедур. Процедуры объявлены до начала программы.
Игорь Игорь
Переделал код как в вашем сообщении, не помогло.
type
arr = array [1..10] of integer;
....
case v of
1: v1(mas1,mas2:arr; k,m,n:integer);
2: v2(mas1,mas2:arr; k,m,n:integer);
3: v3(mas1,mas2:arr; k,m,n:integer);
end;
arr = array [1..10] of integer;
....
case v of
1: v1(mas1,mas2:arr; k,m,n:integer);
2: v2(mas1,mas2:arr; k,m,n:integer);
3: v3(mas1,mas2:arr; k,m,n:integer);
end;
массивы нельзя передавть в качестве параметров процедур
Андрей Кульпин
Как это нельзя ? Можно.
Paul Kelevra
Конечно, можно. Есть даже несколько способов.
Никита Емельянов
Видимо черный плащ имел ввиду что в таком виде их нельзя передавать.
Похожие вопросы
- где ошибка в программе turbo pascal (фото внутри)
- Turbo Pascal. 2 задачи на процедуры и функции
- Turbo Pascal! Код ASCII, какой код у ESC и как он (вообще любой код ASCII) изображаеться в программе???
- Люди помогите пожалуйста....Кто понимает TURBO PASCAL
- Помогите сделать задания по програмированию(двумерные массивы)Turbo Pascal
- Как вставить текст в Turbo Pascal 7.1???
- Turbo Pascal
- Объясните смысл прогаммы в Turbo Pascal
- Я в коледже Turbo Pascal прохожу. Скажите он вообще где нибудь нужен? Может Turbo Pascal морально устарел?
- DOS OC или создание ОС на Turbo Pascal
Вместо
type proc=procedure(mas1,mas2: array of integer; k,m,n: integer);
const pro:array[1..3]of proc=(v1,v2,v3);
можно было написать просто
const pro:array[1..3]of procedure(mas1,mas2: array of integer; k,m,n: integer)=(v1,v2,v3);