把c语言改成c++,我改好了,就是不正确,请问怎么才是正确的

2024-12-03 10:54:33
推荐回答(4个)
回答1:

c语言中的结构体在c++中基本不变 只不过把一些函数编程c++的类即可

#include
#include
struct Data
{
char OperatorID[7];
char PartID[5];
float x0,y0,x1,y1;
float distance;
char Ispass;
void input(){
cin>>OperatorID>>PartID>>x0>>y0>>x1>>y1;
}
};

class Compute{
private:
Data p[10];
public:
void input()
{
int i;
for(i=0;i<10;i++)
{
cout<<"请输入第"< p[i].input();
}
}
void calc1()
{
for(int i=0;i<10;i++)
{
p[i].distance=(float)sqrt(pow(p[i].x0-p[i].x1,2)+pow(p[i].y0-p[i].y1,2));
p[i].Ispass=p[i].distance>=156.203 && p[i].distance<=156.207?1:0;
}
}
float calc2()
{
float u0=0;
float u1=0;
float dailt;
int i;
for(i=0;i<10;i++)
u0+=p[i].distance;
u0=u0/10;
for(i=0;i<10;i++)
u1+=(float)pow(p[i].distance-u0,2);
dailt=(float)sqrt(u1/10);
return u0;
}
void output(float u)
{
for(int i=0;i<10;i++)
{
if(p[i].Ispass==0)
cout< }
cout<<"本批次零件的均方差"<}
};
void main()
{
Compute com;
com.input();
com.calc1();
double u0 = com.calc2();
com.output(u0);
}

回答2:

1 cout<<"本批次零件的均方差"<2 p[i].input();
p[i].calc1();
p[i].calc2();
p[i].output(); 这些地方的i没有定义

给个建议 函数的实现放在类或者结构体的外面,或者另外的CPP文件中,这样看起来结构清晰些,不要全整在一个里面了

回答3:

楼主,我稍微改了一下,可能有些地方和原来的不一样,但实现功能完全相同,望采纳!
#include
#include
#include
using namespace std;

class Data
{
public:
Data();
void input(string,string,float,float,float,float);
float distance();
bool IsPass();//这里我把char型改成bool型了,如果你不希望的话也可以改回来
string getOID(){ return OperatorID;}
string getPID(){ return PartID;}
private:
string OperatorID;
string PartID;
float x0,x1,y0,y1;
};
Data::Data()
{
OperatorID="";
PartID="";
x0=0;x1=0;y0=0;y1=0;
}
void Data::input(string a,string b,float c,float d,float e,float f)
{
OperatorID=a;
PartID=b;
x0=c;x1=d;y0=e;y1=f;
}
float Data::distance()
{
return (float)(sqrt(pow(x0 - x1,2) + pow(y0 - y1,2)));
}
bool Data::IsPass()
{
return(distance()>=156.203 && distance()<=156.207);
}
void inputInf(Data p[],int n);
float aveLen(Data a[],int n);//求平均长度
float dataVar(Data a[],int n,float m);//求方差
void output(Data p[],int n,float m);//输出
void main()
{
Data p[3];
int n=3;
float aveDist=0;//平均值
float u=0;//方差
inputInf(p,n);//输入数据
aveDist=aveLen(p,n);
u = dataVar(p,n,aveDist);
output(p,n,u);
}
void inputInf(Data p[],int n)
{
string a,b;
float c,d,e,f;
for(int i=0;i {
cout<<"请输入第"< cin>>a>>b>>c>>d>>e>>f;
if (a.length() !=7)
{
cout<<"OperatorID 长度不对!请重新输入这组数据:"< i--;
}
else if(b.length()!=5)
{
cout<<"PartID 长度不对!请重新输入这组数据:"< i--;
}
else{
p[i].input(a,b,c,d,e,f);
}
}
}
float aveLen(Data a[],int n)//求平均长度
{
float l=0;
for(int i=0;i l=l+a[i].distance();
return l/n;
}
float dataVar(Data a[],int n,float m)//求方差
{
float u=0;
for(int i=0;i u=u+pow((a[i].distance()-m),2);
return sqrt(u);
}
void output(Data p[],int n,float m)
{
cout<<"合格产品有:"< for(int i=0;i {
if(p[i].IsPass())
cout< }
cout<<"这批产品的方差为:"<}

回答4:

mian函数放的位置不对。这样写就得在main函数前声明调用函数