#include<stdio.h>
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
double a(double x)
{
return 2 * pow(x, 3) - 4 * pow(x, 2) + 3 * x - 6;
}
double b(double x1, double x2, double(*c)(double))
{
double d;
do
{
d = (x1 + x2) / 2;
if ((*c)(d) * (*c)(x1) > 0)
x1 = d;
else
x2 = d;
} while ((*c)(d) >= 1e-6);
return d;
}
int main(void)
{
double x1, x2;
double a(double);
double b(double, double, double);
double(*c)(double);
c = a;
do
{
scanf_s("%lf,%lf", &x1, &x2);
}
while ((*c)(x1) * (*c)(x2) > 0);
printf("%lf",b(x1,x2,*c));
return 0;
为什么*c有问题;而且我把b函数删了就没有问题,为什么;为什么我可以删b函数不可以删a函数?
二分法求方程的根的疑问
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 快乐鹦鹉 2022-11-01 10:36关注
获得7.50元问题酬金 b函数第三个参数是double类型,但你实际调用b函数却用 * c作为参数?
main中b函数的申明,和前面的b函数定义中的第三个参数是不一样的啊
修改main函数中的b函数声明为:
double b(double, double, double(*c)(double));#include<stdio.h> #include<iostream> #include<string.h> #include<math.h> using namespace std; double a(double x) { return 2 * pow(x, 3) - 4 * pow(x, 2) + 3 * x - 6; } double b(double x1, double x2, double(*c)(double)) { double d; do { d = (x1 + x2) / 2; if ((*c)(d) * (*c)(x1) > 0) x1 = d; else x2 = d; } while ((*c)(d) >= 1e-6); return d; } int main(void) { double x1, x2; double a(double); double b(double, double, double(*c)(double)); double(*c)(double); c = a; do { scanf_s("%lf,%lf", &x1, &x2); } while ((*c)(x1) * (*c)(x2) > 0); printf("%lf",b(x1,x2,*c)); return 0; }
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 zabbix6.4与frp如何进行联动
- ¥15 如何使用Echarts制作途中时间序列表
- ¥15 图论相关的数学问题,共10个
- ¥15 EtherCAT的问题,创建一个XML文件
- ¥15 微信公众号羽毛球自动抢定场程序制作
- ¥15 Fluent UDF 编写
- ¥15 xcode开发的macos应用,如何使窗口居中显示?
- ¥20 统信uos升级apt后启动失败
- ¥15 求指导储层饱和度及含水率测井解释
- ¥200 建三维地震工区写入sgy到指定目录