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

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

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

Помогите решить.Суть в нахождении значения выражения с использованием указателя на функцию.При вызове функции расчет пишет ошибку:отсутствуют экзэмпляры соответствующие списку аргументво.
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
float raschet(float ,float ,float ,float ,float ,float(*)(float));
float integral(float ,float ,float ,float ,float ,float );
int main()
{float h,z;
    z=raschet(                                 //?????
    printf(" Интеграл:z=%f",z);
}
float integral(float a,float b,float n,float h,float x,float s)
{double  a,b,n,h,x,s;                   
a=3.0;
b=5.0;
n=200.0;
h=(b-a)/n;
x=a;
s=0;                                        
s=s+h*((pow(x,3)+3*x-1)+(pow((x+h),3)+3*(x+h)-1))/2;
x=x+h;
return s;       
}
float raschet(float x,float s,float h,float b,float (*integral) (float))
    {if (x<(b-h))
        {s=s+h*((pow(x,3)+3*x-1)+(pow((x+h),3)+3*(x+h)-1))/2;
        x=x+h;
        }
    else
        {printf(" Интеграл:z=%f",s);
        }
return s;
    }

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
typedef float(*Function)(float, float, float);
 
float integral(float, float, float);
float raschet(float, float, float, Function);
 
int main() {
   printf("Интеграл: z = %f", raschet(3.0, 5.0, 200.0, integral));
   return 0;
}
 
float integral(float a, float b, float n) {
    float h = (b - a) / n;
    return h * ((pow(a, 3) + 3 * a - 1) + (pow((a + h), 3) + 3 * (a + h) - 1)) / 2;
}
 
float raschet(float a, float b, float n, Function func) {
    return func(a, b, n);
}

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

  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
Похожие ответы