Нахождение значения выражения с использованием указателя на функцию - C (СИ)

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

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

Помогите решить.Суть в нахождении значения выражения с использованием указателя на функцию.При вызове функции расчет пишет ошибку:отсутствуют экзэмпляры соответствующие списку аргументво.
Листинг программы
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <stdlib.h>
  4. float raschet(float ,float ,float ,float ,float ,float(*)(float));
  5. float integral(float ,float ,float ,float ,float ,float );
  6. int main()
  7. {float h,z;
  8. z=raschet( //?????
  9. printf(" Интеграл:z=%f",z);
  10. }
  11. float integral(float a,float b,float n,float h,float x,float s)
  12. {double a,b,n,h,x,s;
  13. a=3.0;
  14. b=5.0;
  15. n=200.0;
  16. h=(b-a)/n;
  17. x=a;
  18. s=0;
  19. s=s+h*((pow(x,3)+3*x-1)+(pow((x+h),3)+3*(x+h)-1))/2;
  20. x=x+h;
  21. return s;
  22. }
  23. float raschet(float x,float s,float h,float b,float (*integral) (float))
  24. {if (x<(b-h))
  25. {s=s+h*((pow(x,3)+3*x-1)+(pow((x+h),3)+3*(x+h)-1))/2;
  26. x=x+h;
  27. }
  28. else
  29. {printf(" Интеграл:z=%f",s);
  30. }
  31. return s;
  32. }

Решение задачи: «Нахождение значения выражения с использованием указателя на функцию»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. typedef float(*Function)(float, float, float);
  6.  
  7. float integral(float, float, float);
  8. float raschet(float, float, float, Function);
  9.  
  10. int main() {
  11.    printf("Интеграл: z = %f", raschet(3.0, 5.0, 200.0, integral));
  12.    return 0;
  13. }
  14.  
  15. float integral(float a, float b, float n) {
  16.     float h = (b - a) / n;
  17.     return h * ((pow(a, 3) + 3 * a - 1) + (pow((a + h), 3) + 3 * (a + h) - 1)) / 2;
  18. }
  19.  
  20. float raschet(float a, float b, float n, Function func) {
  21.     return func(a, b, n);
  22. }

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

  1. Включаем необходимые заголовочные файлы для работы с функциями, математическими операциями и указателями на функции.
  2. Создаем тип данных для указателя на функцию с именем Function, которая принимает три аргумента типа float и возвращает значение типа float.
  3. Определяем функцию с именем integral, которая принимает три аргумента типа float и вычисляет интеграл по методу трапеции.
  4. Определяем функцию с именем raschet, которая принимает четыре аргумента типа float и вызывает функцию, на которую указывает указатель func, с передачей ей аргументов a, b и n.
  5. В функции main() вызываем функцию raschet, передавая ей аргументы 3.0, 5.0, 200.0 и указывая функцию integral в качестве указателя на функцию.
  6. Результат вычисления функции raschet выводим на экран с помощью функции printf().
  7. Возвращаем 0 из функции main(), чтобы указать, что программа успешно завершилась.
  8. В функции integral() вычисляем значение h, которое представляет собой шаг сетки для вычисления интеграла.
  9. Вычисляем значения a^3 + 3a - 1 и (a+h)^3 + 3(a+h) - 1, которые используются для вычисления интеграла по методу трапеции.
  10. Вычисляем сумму этих двух значений и умножаем ее на h, чтобы получить приближенное значение интеграла.
  11. Возвращаем полученное значение интеграла из функции integral().
  12. В функции raschet() передаем аргументы a, b и n в функцию, на которую указывает указатель func.
  13. Возвращаем результат вызова функции, на которую указывает указатель func, из функции raschet().
  14. В функции main() передаем аргументы 3.0, 5.0 и 200.0 в функцию raschet() и выводим результат на экран.
  15. В функции raschet() вызываем функцию integral с аргументами a, b и n.
  16. В функции integral() вычисляем значение h.
  17. Вычисляем значения a^3 + 3a - 1 и (a+h)^3 + 3(a+h) - 1.
  18. Вычисляем сумму этих двух значений и умножаем ее на h.
  19. Возвращаем полученное значение интеграла из функции integral().
  20. В функции raschet() возвращаем результат вызова функции integral() из функции raschet().

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


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

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

9   голосов , оценка 4.111 из 5

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

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

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