注册 登录
编程论坛 VC++/MFC

初学c++,共用体那出错吧,求教

唐兵 发布于 2013-01-25 10:52, 331 次点击
设计一个函数对一元二次方程式求解
ax2+bx+c=0,要求如下:
1、函数的形参为f(int a, int b, int c)
2、函数返回各种可能的解,但不显示。
3、main函数中调用该函数,显示解。
提示,先定义一个结构类型,描述各种解的情况,函数返回该结构类型

#include <iostream.h>
#include <math.h>
double fun(double a,double b,double c)

{
double a1=0,a2=0,a3=0,a4=0;
typedef struct f
 {
double a1=(-c/b);
double a2=wrong;/*这部该咋写啊?*/
double a3=(-b+sqrt(b*b-4*a*c))/(2*a);
    double a4=(-b+sqrt(b*b+4*a*c))/(2*a);
}n;
if (a==0)return n.a1;
if ((b*b-4*a*c)<0)return n.a2;
if ((b*b-4*a*c)>=0)return n.a3;

}
void main()
{
    double a,b,c,jie;
    cin>>a>>b>>c;
    jie=fun(a,b,c);
    cout<<jie;
}
3 回复
#2
yuccn2013-01-25 16:36
typedef struct f
 {
 double a1=(-c/b);
 double a2=wrong;/*这部该咋写啊?*/
 double a3=(-b+sqrt(b*b-4*a*c))/(2*a);
     double a4=(-b+sqrt(b*b+4*a*c))/(2*a);
 }n;

不可以这样写的,吧结构体什么放在外面吧



typedef struct _DATA
 {
 double a1;
 double a2;
 double a3;
 double a4;
 }DATA ,*PDATA;

DATA n;
n.a1 == 你的赋值
……

#3
唐兵2013-01-25 22:57
回复 2楼 yuccn
为啥不可以直接对他初始化啊?
#4
yuccn2013-01-26 19:03
你用的也不是直接初始化。你那样写,是在申明的地方,结构体的内存空间都还没有的。

如果要直接初始化,应该这样:
DATA n =
{
   // 写上每个值
}
1