![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Цитата:
![]() Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |