![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Как передать массивы различных размеров подпрограмме ? Pascal
|
|
#2
|
||||
|
||||
|
Код:
type TIntArray = array [1..100] of integer; TCharArray = array [1..100] of char; procedure someproc(intarr:TIntArray; var charvararr:TCharArray); begin //code here end; |
|
#3
|
||||
|
||||
|
обработка массивов различных размеров в одной процедуре.
|
|
#4
|
||||
|
||||
|
{Почему обработка идет в нескольких функциях:
Возможно, самой главной слабостью языка Pascal является то, что массивы рассматриваются как отдельные типы, а не как агрегация различных объектов одного типа. Это приводит к тому, что, например, array [1. .10] of Integer и аггау[1. .20] of integer представляют собой/разные типы данных. В результате алгоритмы обработки массивов усложняются, поскольку массивы различных размеров невозможно передать общей подпрограмме (например, подпрограмме перемножения матриц). Строки реализованы как массивы символов, что также затрудняет их обработку в случае строк различной длины.} |
|
#5
|
||||
|
||||
|
Ты бы определился что тебе надо.
|
|
#6
|
||||
|
||||
|
на примере обнуления массива чисел:
Код:
procedure A(var Arr : array of integer);
var i:byte;
begin
for i:=Low(Arr) to High(Arr) do /* Low и High - 1й и последний номер массива*/
Arr[i]:=0;
end; |
|
#7
|
||||
|
||||
|
KOOL, это не Pascal.
![]() |
|
#8
|
||||
|
||||
|
это паскаль. называется "параметр открытого типа". можете даже проверить - заработает.
|
|
#9
|
||||
|
||||
|
KOOL - Вы неправы не заработает. Нет в паскале динамических массивов. Я даже сам усомнился, проверил на Turbo Pascal 7.1 - как и ожидалось неработает.
|
|
#10
|
||||
|
||||
|
Значит, неправильно проверяли. У меня работает. И это не совсем динамический массив. Вот объявлять переменную таким образом нельзя. Если что, взято отсюда: Алгоритмизация и программирование на Турбо Паскале: Учебное пособие - Новичков В.С., Парфилова Н.И., Пылькин А.Н. - М.:Горячая линия-Телеком, 2005. ISBN 5-93517-183-Х. страница 223.
И, наконец, полный 100% работаюший код: Код:
program OpenArray;
procedure OA(var Arr : array of byte);
var i:byte;
begin
for i:=Low(Arr) to High(Arr) do
Arr[i]:=Random(255);
end;
var A:array[2..10] of byte; {Переменные - НЕ динамические массивы}
B:array[1..20] of byte;
i:byte;
begin
Randomize;
OA(A);
OA(B);
for i:=2 to 10 do
Write(A[i], ' ');
Writeln;
for i:=1 to 20 do
Write(B[i], ' ');
Readln;
end.![]() |
|
#11
|
||||
|
||||
|
Цитата:
![]() |