Как правильно вызвать функциию? - Pascal ABC
Формулировка задачи:
Имеется код
При компиляции ошибка:
Program1.pas(26,9): Нельзя преобразовать тип array ['a'..'z'] of integer к array of integer
В чем проблема ни как не пойму.
Решение задачи: «Как правильно вызвать функциию?»
textual
Листинг программы
type mas=array of integer; function f(a:mas; var m: byte):word; var i,n:word; begin n:=high(a); m:=a[0]; for i:=1 to n do if a[i] < m then a[i]:=m else m:=a[i]; f:=n; end; var b:mas; c:char; n:byte; begin setlength(b,26); for c:='a' to 'z' do b[ord(c)-ord('a')]:=ord(c)mod 5; write(f(b,n),n); end.
Объяснение кода листинга программы
- Создаётся тип данных
mas
, который представляет собой массив целых чисел. - Определяется функция
f
, которая принимает массивa
и переменнуюm
типаbyte
. Функция возвращает слово (word
). - В функции объявляются три переменные:
i
,n
иm
. Переменнаяi
является словом, а переменныеn
иm
являются целыми числами. - Задаётся начальное значение переменной
m
как первый элемент массиваa
. - Задаётся начальное значение переменной
n
как высота массиваa
. - Запускается цикл
for
, который выполняется от 1 доn
. - Внутри цикла проверяется условие: если текущий элемент массива
a
меньше значения переменнойm
, то он заменяется наm
. Если же текущий элемент больше или равенm
, то значениеm
присваивается переменнойm
. - После завершения цикла, значение переменной
n
становится длиной массиваa
. - Функция
f
возвращает значение переменнойn
. - Создаётся переменная
b
типаmas
. - Выполняется итерация по буквам алфавита от
a
доz
. Каждая буква присваивается соответствующий ей порядковый номер (от 1 до 26) и записывается в массивb
. - Создаётся переменная
c
типаchar
. - Выполняется итерация по байтам от 0 до
n
. Каждый байт присваивается переменнойc
. - Выводится результат вызова функции
f(b,n)
, то есть длина массиваa
. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д