Error: Incompatible types: got "Extended" expected "SmallInt" - Turbo Pascal
Формулировка задачи:
Задание.
Написать программу решения задачи, используя функции: в основной функции вычислить с помощью генератора случайных чисел 10 элементов массива, во вспомогательной - вычислить скалярную величину. Проблема в том что я не смог сделать правильно задание на Паскале.Программа нормально работает
На паскале:
как это исправить ?
Решение задачи: «Error: Incompatible types: got "Extended" expected "SmallInt"»
textual
Листинг программы
const
n = 10;
type
mas=array[1..n] of integer;
function F(X:mas):real;
function L(X:mas):real;
var
Pr : real;
i : integer;
begin
Pr:=1;
for i:=1 to n do
Pr:=(1+abs(X[i]));
L:=Pr
end;
var
i:integer;
sum : real;
begin
sum:=0;
for i:=1 to n do
sum:=(sqr(X[i])-2*X[i])/L(x);
F:=sum
end;
var
X:mas;
i:integer;
g:real;
begin
writeln('Massiv X');
randomize;
for i:=1 to n do
begin
X[i]:=random(20)-10;
write(X[i]:3);
end;
writeln;
g:=F(X);
writeln('g=',g:0:2);
end.
Объяснение кода листинга программы
- Переменная
nинициализируется значением 10. - Создается тип данных
mas, который представляет собой массив целых чисел от 1 доn. - Определяются две функции
FиL, которые принимают массивXв качестве аргумента и возвращают значение типаreal. В функцииFиспользуется формула(1+abs(X[i])), а в функцииLиспользуется циклfor, в котором вычисляется среднее значение квадрата каждого элемента массиваX. - Создается переменная
sumтипаreal, которая будет использоваться для хранения суммы всех элементов массиваX. - В цикле
forпроисходит вычисление суммы элементов массиваX. Для каждого элемента вычисляется квадрат, вычитается два раза значение этого элемента и результат делится на значение функцииL. - Создается переменная
Xтипаmas. - В цикле
forпроисходит инициализация каждого элемента массиваXслучайным числом от -10 до 10. - Выводится значение переменной
g, которое равно результату вычисления функцииF(X). - Программа завершается.