Нахождение значения выражения с использованием указателя на функцию - 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); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями, математическими операциями и указателями на функции.
- Создаем тип данных для указателя на функцию с именем Function, которая принимает три аргумента типа float и возвращает значение типа float.
- Определяем функцию с именем integral, которая принимает три аргумента типа float и вычисляет интеграл по методу трапеции.
- Определяем функцию с именем raschet, которая принимает четыре аргумента типа float и вызывает функцию, на которую указывает указатель func, с передачей ей аргументов a, b и n.
- В функции main() вызываем функцию raschet, передавая ей аргументы 3.0, 5.0, 200.0 и указывая функцию integral в качестве указателя на функцию.
- Результат вычисления функции raschet выводим на экран с помощью функции printf().
- Возвращаем 0 из функции main(), чтобы указать, что программа успешно завершилась.
- В функции integral() вычисляем значение h, которое представляет собой шаг сетки для вычисления интеграла.
- Вычисляем значения a^3 + 3a - 1 и (a+h)^3 + 3(a+h) - 1, которые используются для вычисления интеграла по методу трапеции.
- Вычисляем сумму этих двух значений и умножаем ее на h, чтобы получить приближенное значение интеграла.
- Возвращаем полученное значение интеграла из функции integral().
- В функции raschet() передаем аргументы a, b и n в функцию, на которую указывает указатель func.
- Возвращаем результат вызова функции, на которую указывает указатель func, из функции raschet().
- В функции main() передаем аргументы 3.0, 5.0 и 200.0 в функцию raschet() и выводим результат на экран.
- В функции raschet() вызываем функцию integral с аргументами a, b и n.
- В функции integral() вычисляем значение h.
- Вычисляем значения a^3 + 3a - 1 и (a+h)^3 + 3(a+h) - 1.
- Вычисляем сумму этих двух значений и умножаем ее на h.
- Возвращаем полученное значение интеграла из функции integral().
- В функции raschet() возвращаем результат вызова функции integral() из функции raschet().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д