c语言写程序一直有1error,我编了一个程序 感觉没有问题 但是编译的时候有一堆error 自己实在不知道怎么改 求大神帮忙...

已结贴√

问题点数:10 回复次数:5

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

我编了一个程序 感觉没有问题 但是编译的时候有一堆error 自己实在不知道怎么改 求大神帮忙

我编了一个程序 感觉没有问题 但是编译的时候有一堆error  自己实在不知道怎么改 求大神帮忙

报告的错误如下

Compiling...

OR.c

C:\Documents and Settings\Administrator\桌面\C2\OR.c(45) : error C2143: syntax error : missing ';' before ''

C:\Documents and Settings\Administrator\桌面\C2\OR.c(48) : error C2079: 'con' uses undefined struct 'con'

C:\Documents and Settings\Administrator\桌面\C2\OR.c(48) : error C2078: too many initializers

C:\Documents and Settings\Administrator\桌面\C2\OR.c(77) : warning C4305: 'initializing' : truncation from 'const double ' to 'float '

C:\Documents and Settings\Administrator\桌面\C2\OR.c(86) : error C2059: syntax error : 'for'

C:\Documents and Settings\Administrator\桌面\C2\OR.c(86) : error C2143: syntax error : missing '{' before '<='

C:\Documents and Settings\Administrator\桌面\C2\OR.c(86) : error C2059: syntax error : '<='

C:\Documents and Settings\Administrator\桌面\C2\OR.c(86) : warning C4142: benign redefinition of type

C:\Documents and Settings\Administrator\桌面\C2\OR.c(86) : error C2059: syntax error : ')'

C:\Documents and Settings\Administrator\桌面\C2\OR.c(87) : error C2099: initializer is not a constant

C:\Documents and Settings\Administrator\桌面\C2\OR.c(87) : error C2143: syntax error : missing ';' before 'for'

C:\Documents and Settings\Administrator\桌面\C2\OR.c(87) : error C2143: syntax error : missing '{' before '<='

C:\Documents and Settings\Administrator\桌面\C2\OR.c(87) : error C2059: syntax error : '<='

C:\Documents and Settings\Administrator\桌面\C2\OR.c(87) : fatal error C1903: unable to recover from previous error(s); stopping compilation

执行 cl.exe 时出错.

OR.obj - 1 error(s), 0 warning(s)

程序如下:

#include

#include

#include

#define Pi 3.14159    //角度弧度化所用参数

#define Imax 200     //一共有多少个点

//能够容忍的取向差的最大值需要在fccorientation函数中设定

//需要分别输入导入和导出的文件的位置

void matproduct(float a2[3][3],float b2[3][3],float c2[3][3]);

float misorientation(float con1[3][3],float fcc1[3][3],float con2[3][3],float bcc1[3][3],float or2[3][3]);

void transpose(float a3[3][3]);

int main()

{

int i;//定义主程序中使用的循环变量

float part[Imax][3];

FILE *in;

if((in=fopen("C:\\c program\\hudu1.txt","r"))==NULL)  //需要输入导入文件的存放地址

{printf("cannot open file\n");

exit(0);

}

else

{for(i=0;i

fscanf(in,"%f %f %f",part[i][0],part[i][1],part[i][2]);

}

fclose(in);//将txt文件输入input数组的语句

for(i=0;i

printf("%f %f %f\n",part[i][0],part[i][1],part[i][2]);

struct convert

{float C[3][3];};

struct convert con[24]=

{

{1,0,0,0,1,0,0,0,1},

{0,0,-1,0,-1,0,-1,0,0},

{0,0,-1,0,1,0,1,0,0},

{-1,0,0,0,1,0,0,0,-1},

{0,0,1,0,1,0,-1,0,0},

{1,0,0,0,0,-1,0,1,0},

{1,0,0,0,-1,0,0,0,-1},

{1,0,0,0,0,1,0,-1,0},

{0,-1,0,1,0,0,0,0,1},

{-1,0,0,0,-1,0,0,0,1},

{0,1,0,-1,0,0,0,0,1},

{0,0,1,1,0,0,0,1,0},

{0,1,0,0,0,1,1,0,0},

{0,0,-1,-1,0,0,0,1,0},

{0,-1,0,0,0,1,-1,0,0},

{0,1,0,0,0,-1,-1,0,0},

{0,0,-1,1,0,0,0,-1,0},

{0,0,1,-1,0,0,0,-1,0},

{0,-1,0,0,0,-1,1,0,0},

{0,1,0,1,0,0,0,0,-1},

{-1,0,0,0,0,1,0,1,0},

{0,0,1,0,-1,0,1,0,0},

{0,-1,0,-1,0,0,0,0,-1},

{-1,0,0,0,0,-1,0,-1,0},

};

float fc[3],or1[3];

float a1,b1,c1,a,b,c,o,p,q,x,y,z,x1,y2,z1,Omin,Oaver,Osum,O;

float Oavermin=Pi;                            //abc组合当中的取向差的最小值

float Ocritical=1;                           //直接输入数据不要输入公式 计算得到的取向差需要符合的外部条件,可以通过计算结果进行调整

float Mfcc[3][3],Mbcc[3][3],or[3][3];

int num,m,n;

for(a=0.0;a<=90;a=a+0.1)  //需要检查角度的范围

for (b=0.0;b<=90;b=b+0.1)

for (c=0.0;c<=90;c=c+0.1)

for (x=0.0;x<=90;x=x+0.1)  //需要检查角度的范围

for (y=0.0;y<=90;y=y+0.1)

for (z=0.0;z<=90;z=z+0.1)

{

a1=a/180.0*Pi;

b1=b/180.0*Pi;

c1=c/180.0*Pi;

Mfcc[0][0]=(cos(a1)*cos(c1)-sin(a1)*sin(c1)*cos(b1));

Mfcc[0][1]=(sin(a1)*cos(c1)+cos(a1)*sin(c1)*cos(b1));

Mfcc[0][2]=sin(c1)*sin(b1);

Mfcc[1][0]=(-cos(a1)*sin(c1)-sin(a1)*cos(c1)*cos(b1));

Mfcc[1][1]=(-sin(a1)*sin(c1)+cos(a1)*cos(c1)*cos(b1));

Mfcc[1][2]=cos(c1)*sin(b1);

Mfcc[2][0]=sin(a1)*sin(b1);

Mfcc[2][1]=-cos(a1)*sin(b1);

Mfcc[2][2]=cos(b1);

x1=x/180.0*Pi;

y2=y/180.0*Pi;

z1=z/180.0*Pi;

or[0][0]=(cos(x1)*cos(z1)-sin(x1)*sin(z1)*cos(y2));

or[0][1]=(sin(x1)*cos(z1)+cos(x1)*sin(z1)*cos(y2));

or[0][2]=sin(z1)*sin(y2);

or[1][0]=(-cos(x1)*sin(z1)-sin(x1)*cos(z1)*cos(y2));

or[1][1]=(-sin(x1)*sin(z1)+cos(x1)*cos(z1)*cos(y2));

or[1][2]=cos(z1)*sin(y2);

or[2][0]=sin(x1)*sin(y2);

or[2][1]=-cos(x1)*sin(y2);

or[2][2]=cos(y2);

Osum=0;

num=0;

for (i=0;i

{

o=par[i][0];

p=par[i][1];

q=par[i][2];

if ((o==0)&&(p==0)&&(q==0))

{

Omin=0;

}                     //对应if条件语句

else

{

Mbcc[0][0]=cos(o)*cos(q)-sin(o)*sin(q)*cos(p);      //由于初始化在程序的外边所以只能单独赋值

Mbcc[0][1]=sin(o)*cos(q)+cos(o)*sin(q)*cos(p);

Mbcc[0][2]=sin(q)*sin(p);

Mbcc[1][0]=-cos(o)*sin(q)-sin(o)*cos(q)*cos(p);

Mbcc[1][1]=-sin(o)*sin(q)+cos(o)*cos(q)*cos(p);

Mbcc[1][2]=cos(q)*sin(p);

Mbcc[2][0]=sin(o)*sin(p);

Mbcc[2][1]=-cos(o)*sin(p);

Mbcc[2][2]=cos(p);

Omin=Pi;

for (m=0;m<24;m++)

for (n=0;n<24;n++)

{ O=misorientation(con[m].C,Mfcc,con[n].C,Mbcc,or);

if (O

Omin=O;

}                   //对应for条件语句

}                     //对应else 条件语句

Osum=Osum+Omin;

num++;

}                      //对应i层次的for 循环结束

Oaver=Osum/num;

if ((Oavermin>=Oaver)&&(Oaver<=Ocritical))   //在a,b,c的变化范围内寻找取向差最小的abc组合,同时最小的取向差还需要满足程序开始设定的标准Ocritical

{fc[0]=a;

fc[1]=b;

fc[2]=c;

or1[0]=x;

or1[1]=y;

or1[2]=z;

}

}//对应最上边角度变化的for语句

printf("Mfcc= f% %f %f\n",fc[0],fc[1],fc[2]);

printf("or  = f% %f %f\n",or1[0],or1[1],or1[2]);

return(0);

}

float misorientation(float con1[3][3],float fcc1[3][3],float con2[3][3],float bcc1[3][3],float or2[3][3])

{int i;

float O1;

float a1[3][3],b1[3][3],c1[3][3],d1[3][3];

matproduct(or,con1,a1);

matproduct(a1,fcc1,b1);

matproduct(con2,bcc1,c1);

transpose(c1);

matproduct(b1,c1,d1);

//for(i=0;i<3;i++)

//printf("%f %f %f\n",d1[i][0],d1[i][1],d1[i][2]);

if((d1[0][0]+d1[1][1]+d1[2][2]-1)/2>=1)

O1=0;

else if((d1[0][0]+d1[1][1]+d1[2][2]-1)/2<=-1)

O1=3.14159;

else

O1=acos((d1[0][0]+d1[1][1]+d1[2][2]-1)/2);

//printf("%f",O1);

return(O1);

}

void matproduct(float a2[3][3],float b2[3][3],float c2[3][3])      //对矩阵进行乘法运算,结果存储到c矩阵中

{int i1,j1;

for (i1=0;i1<3;i1++)

for (j1=0;j1<3;j1++)

{c2[i1][j1]=a2[i1][0]*b2[0][j1]+a2[i1][1]*b2[1][j1]+a2[i1][2]*b2[2][j1];}

}

void transpose(float a3[3][3])//对矩阵进行转置运算

{float c3;

c3=a3[0][1];

a3[0][1]=a3[1][0];

a3[1][0]=c3;

c3=a3[0][2];

a3[0][2]=a3[2][0];

a3[2][0]=c3;

c3=a3[1][2];

a3[1][2]=a3[2][1];

a3[2][1]=c3;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值