Error: Incompatible types: got "Extended" expected "SmallInt" - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Задание.

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

Решение задачи: «Error: Incompatible types: got "Extended" expected "SmallInt"»

textual
Листинг программы
  1. const
  2.   n = 10;
  3. type
  4.   mas=array[1..n] of integer;
  5.  
  6. function F(X:mas):real;
  7.   function L(X:mas):real;
  8.   var
  9.     Pr : real;
  10.     i : integer;
  11.   begin
  12.     Pr:=1;
  13.     for i:=1 to n do
  14.       Pr:=(1+abs(X[i]));
  15.     L:=Pr
  16.   end;
  17.  
  18. var
  19.   i:integer;
  20.   sum : real;
  21. begin
  22.   sum:=0;
  23.   for i:=1 to n do
  24.     sum:=(sqr(X[i])-2*X[i])/L(x);
  25.   F:=sum
  26. end;
  27.  
  28. var
  29.   X:mas;
  30.   i:integer;
  31.   g:real;
  32. begin
  33.   writeln('Massiv X');
  34.   randomize;
  35.   for i:=1 to n do
  36.   begin
  37.     X[i]:=random(20)-10;
  38.     write(X[i]:3);
  39.   end;
  40.   writeln;
  41.   g:=F(X);
  42.   writeln('g=',g:0:2);
  43. end.

Объяснение кода листинга программы

  1. Переменная n инициализируется значением 10.
  2. Создается тип данных mas, который представляет собой массив целых чисел от 1 до n.
  3. Определяются две функции F и L, которые принимают массив X в качестве аргумента и возвращают значение типа real. В функции F используется формула (1+abs(X[i])), а в функции L используется цикл for, в котором вычисляется среднее значение квадрата каждого элемента массива X.
  4. Создается переменная sum типа real, которая будет использоваться для хранения суммы всех элементов массива X.
  5. В цикле for происходит вычисление суммы элементов массива X. Для каждого элемента вычисляется квадрат, вычитается два раза значение этого элемента и результат делится на значение функции L.
  6. Создается переменная X типа mas.
  7. В цикле for происходит инициализация каждого элемента массива X случайным числом от -10 до 10.
  8. Выводится значение переменной g, которое равно результату вычисления функции F(X).
  9. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут