标题:如何把一个实体模型看成由一系列的质点组成,通过c语言编程把点的质量和坐标 ...
只看楼主
Emilia33
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-10-8
结帖率:100%
已结贴  问题点数:20 回复次数:11 
如何把一个实体模型看成由一系列的质点组成,通过c语言编程把点的质量和坐标输出到.txt文本中?请求指点
[local]2[/local][local]3[/local][local]4[/local]
搜索更多相关主题的帖子: c语言编程 模型 如何 
2016-10-08 10:48
Emilia33
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-10-8
得分:0 
这是我编的一部分代码,可是提示我写入时发生访问冲突,怎么办?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct
{double mess;
double x;
double y;
double z;
}POINT;
POINT std,pers[19640];
main()
{double i,j,k;
int t=0;
FILE *fp;
fp=fopen("D:\\a.txt","wb+");
if (fp==0)
printf("can't open this file");
for (i=0.0;i<=50;i+=0.5)  
for(j=0.0;j<=1;j+=0.5)
for(k=0.0;k<=20;k+=0.5)
if(k<=-i+50)
{pers[t++].mess=261.97;
pers[t++].x=i;
pers[t++].y=j;
pers[t++].z=k;
fprintf(fp,"%lf %lf %lf %lf\n",std.mess,std.x,std.y,std.z);
}
fclose(fp);
system("pause");
}

[此贴子已经被作者于2016-10-8 11:49编辑过]

2016-10-08 10:50
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
得分:15 
//你的代码运行pers数组会越界,产生错误

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct
{double mess;
double x;
double y;
double z;
}POINT;
POINT std,pers[19640];
void main()
{double i,j,k;
int t=0;
FILE *fp;
fp=fopen("D:\\a.txt","wb+");
if (fp==0)
printf("can't open this file");
for (i=0.0;i<=50;i+=0.5)  
for(j=0.0;j<=1;j+=0.5)
for(k=0.0;k<=20;k+=0.5)
if(k<=-i+50)
{pers[t].mess=261.97;
pers[t].x=i;      //t++不能在这里用,因为下面的pers[t]代表同一个点
pers[t].y=j;
pers[t].z=k;
fprintf(fp,"%lf %lf %lf %lf\n",pers[t].mess,pers[t].x,pers[t].y,pers[t].z);//std没有被赋值,你写到文件的是什么东西
t++;
}
fclose(fp);
system("pause");
}
2016-10-08 13:10
Emilia33
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-10-8
得分:0 
回复 3楼 word123
因为是工程建模,我后头需要分段再输入一系列的点的坐标,可是又提示位置冲突了,是怎么回事啊?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct
{double mess;
double x;
double y;
double z;
}POINT;
POINT std,pers[19640];
void main()
{double i,j,k,a,b,c;
int t=0;
FILE *fp;
fp=fopen("D:\\a.txt","wb+");
if (fp==0)
printf("can't open this file");
for (i=0.0;i<=50;i+=0.5)  
for(j=0.0;j<=1;j+=0.5)
for(k=0.0;k<=20;k+=0.5)
if(k<=-i+50)
{pers[t].mess=261.97;
pers[t].x=i;     
pers[t].y=j;
pers[t].z=k;
fprintf(fp,"%lf %lf %lf %lf\r\r\n",pers[t].mess,pers[t].x,pers[t].y,pers[t].z);
t++;}
for(a=0.0;i<=110;i+=0.5)  
for(b=0.0;b<=1;j+=0.5)
for(c=-15.0;c<=0;c+=0.5)
{pers[t].mess=261.97;
pers[t].x=a;     
pers[t].y=b;
pers[t].z=c;
fprintf(fp,"%lf %lf %lf %lf\r\r\n",pers[t].mess,pers[t].x,pers[t].y,pers[t].z);
t++;}
fclose(fp);
system("pause");
}
2016-10-08 20:07
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:5 
注意看这三行,发现问题没有?
for(a=0.0;i<=110;i+=0.5)  
 for(b=0.0;b<=1;j+=0.5)
 for(c=-15.0;c<=0;c+=0.5)
2016-10-08 20:51
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
得分:0 
回复 4楼 Emilia33
可不可以把你的错误提示信息截图出来看一下,就这样我也不知道你的具体是什么问题。。
2016-10-08 22:17
Emilia33
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-10-8
得分:0 
回复 5楼 ehszt
发现了,我犯了很低级的错误,循环体中变量不一致,已经改过来了,非常感谢!
2016-10-09 18:10
Emilia33
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-10-8
得分:0 
回复 6楼 word123

不知道你能看到吗?后来我又乱试着运行了一下,有的时候也可以运行,但通常都提示出错,有点搞不懂。不过我的程序这样看起来是没问题的吧?再次循环输出点坐标的时候,还用t计数是ok的吗?
2016-10-09 18:31
Emilia33
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-10-8
得分:0 
2016-10-09 18:33
Emilia33
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-10-8
得分:0 
回复 8楼 Emilia33
好吧,我错了,还是有问题的,点没有全部输出,本来底部的X坐标是到110m的,结果输出到73m就停住了。
2016-10-09 18:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469501-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.180412 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved