Передача массива с целочисленными значениями и индексами char в функцию в Pascal - PullRequest
0 голосов
/ 07 ноября 2019

Мне бы очень хотелось посмотреть, как это делается, компилятор продолжает предполагать, что у меня есть целочисленные индексы и возвращает ошибки.

Как передать следующий массив:

countc: Array['a'..'z'] of Integer;

в функцию

1 Ответ

2 голосов
/ 07 ноября 2019

В традиционном Паскале, прежде чем вы сможете передать что-то вроде вашего массива в функцию, вы должны объявить тип , экземпляром которого является ваш массив, например

type
  TSimpleArray = Array['A'..'Z', '0'..'9'] of integer;
var
  ASimpleArray : TSimpleArray;

Другими словами, вы не можете указать границы массива в определении функции / процедуры.

Как только вы определили тип массива, как описано выше, вы можете объявить функцию (или процедуру), которая имеетпараметр определенного типа, такой как:

function ArrayFunction(SimpleArray : TSimpleArray) : Integer;
var
  C1,
  C2 : Char;
begin
  ArrayFunction := 0;
  for C1 := 'A' to 'Z' do
    for C2 := '0' to '9' do
      ArrayFunction := ArrayFunction + SimpleArray[C1, C2];
end;

, который, очевидно, суммирует содержимое массива.

Более современные Паскали, такие как Delphi и ObjectPascals FPC, также поддерживают другие способы объявления массива-type, но они должны начинаться с нуля (что исключает использование символьных индексов). Delphi и FPC также поддерживают использование Result в качестве псевдонима для имени функции, как в

function ArrayFunction(SimpleArray : TSimpleArray) : Integer;
[...]
begin
  Result := 0;

, что экономит время и усилия, если вы переименуете функцию или скопируете / вставите ее для определения другой функции.

...