Error: Incompatible types: got "Extended" expected "SmallInt" - Turbo Pascal
Формулировка задачи:
Задание.
Написать программу решения задачи, используя функции: в основной функции вычислить с помощью генератора случайных чисел 10 элементов массива, во вспомогательной - вычислить скалярную величину. Проблема в том что я не смог сделать правильно задание на Паскале.
Листинг программы
- #include <iostream>
- #include <cmath>
- const int n = 10;
- float X[n];
- double sum();
- double Pr();
- using namespace std;
- int main()
- {
- cout << "Massiv X" << endl;
- for (int i = 0; i < n; i++)
- {
- X[i] = rand() % 20 + sin(i) - 9;
- cout << X[i] << " "; }
- cout << endl;
- double g;
- { g =sum();
- cout << "g= " << g << endl; }
- }
- double sum()
- { double S = 0;
- for (int i = 1; i < n; i++)
- S += pow(X[i],2)-2*X[i]/Pr();
- return S;
- }
- double Pr()
- { double P = 1; int i;
- for (int k = 1; k < i; k++)
- P *= (1+fabs(X[k]));
- return P;
- }
Листинг программы
- Massiv X
- -6 -2.15853 8.9093 6.14112 3.2432 5.04108 -3.27942 3.65699 0.989358 -7.58788
- g= 210.451
Листинг программы
- uses math;
- const n = 10;
- type mas=array[1..n] of integer;
- function F(X:mas):real;
- function L(X:mas):real;
- var i,sum:integer;
- Pr:real;
- begin
- sum:=0;
- for i:=1 to n do
- sum:=(power(X[i],2)-2*X[i])/L(x);
- F:=sum
- end;
- begin
- Pr:=1;
- for i:=1 to n do
- Pr:=(1+abs(X[i]));
- L:=Pr
- 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;
- begin
- g:=F(X);
- writeln('g=',g:0:2);
- end;
- end.
Листинг программы
- prog.pas(12,28) Error: Incompatible types: got "Extended" expected "SmallInt"
- prog.pas(16,3) Error: Identifier not found "Pr"
- prog.pas(17,6) Error: Identifier not found "i"
- prog.pas(17,5) Error: Ordinal expression expected
- prog.pas(17,5) Error: Illegal counter variable
- prog.pas(18,3) Error: Identifier not found "Pr"
- prog.pas(18,15) Error: Identifier not found "i"
- prog.pas(19,1) Error: Wrong number of parameters specified for call to "L"
- prog.pas(20,1) Error: Identifier not found "Pr"
Решение задачи: «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)
. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д