求解两道问题,高手帮帮忙啊

sc20184 2007-01-01 06:42:48
1、设一矢量地图文件(vec.dat),记录格式如下
1, Road, 3
321230.0, 3545678.0
321260.0, 3545658.0
321330.0, 3545778.0
2, Street, 5
321240.0, 3545678.0
321560.0, 3545858.0
321630.0, 3545578.0
321830.0, 3545378.0
321290.0, 3545258.0
4, Land, 6
...
其中都不分别是记录编号,弧段名称,图形坐标点数;之后是该记录的坐标对。设计满足存储记录格式的矢量数据结构,编写3程序,将数据读入内存按设计的数据结构存储,然后将该地图沿x方向平移1000m,y方向平移500没。再把平移后的图形按原来的文件格式写入原文件。

2、设有一N行M列的图象“Image.dat”(单字节,无头尾).编写c程序把图像读入内存组IMAGE[i][j]。对图像进行密度分割,然后写入文件"Result.dat"

各位大侠帮帮忙啊,最好给出实例。我用的VC++6,怎样也调不过,尤其是格式化读写文件!救命啊
...全文
382 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sc20184 2007-01-05
  • 打赏
  • 举报
回复
分怎么也给不出去,算了。我也不管了
sc20184 2007-01-05
  • 打赏
  • 举报
回复
To warfee2006(『潜行★修道oo0』☆☆☆☆☆☆☆): 帖子我结了。分就给你了。总比给某些垃圾好。
sc20184 2007-01-05
  • 打赏
  • 举报
回复
To Jim_King_2000() :别把自己搞得跟专家似的。这帖子我也不问了,最讨厌有的人眼高手低,要是不屑回答,就别回帖,无聊。
Jim_King_2000 2007-01-03
  • 打赏
  • 举报
回复
读数据可以用scanf,很方便。思考一下怎么在内存中组织数据。不过我怎么看怎么像作业。
ReverseEngineering 2007-01-03
  • 打赏
  • 举报
回复
看了半天,看不太懂。
wonxin 2007-01-02
  • 打赏
  • 举报
回复
我不会,但帮你顶一下!!!
warfee2006 2007-01-02
  • 打赏
  • 举报
回复
l1怎么没释放?
warfee2006 2007-01-02
  • 打赏
  • 举报
回复
while(!feof(fin))
{
l1=(struct arc_type *)malloc(sizeof(struct arc_type));
fscanf(fin,"%d,%s%d",&l1->id,&l1->name,&l1->point);

for(int i=0,n2=0;i<l1->point;i++)
{
p1=(struct arc_data *)malloc(sizeof(struct arc_data));
fscanf(fin,"%f,%f",&p1->x,&p1->y);

n2++;
if(n2==1)
head=p1;
else
p2->next=p1;

p2=p1;
}
p2->next=NULL;
l1->data=head;

n1++;
if(n1==1)
list=l1;
else
l2->next=l1;
l2=l1;
}
sc20184 2007-01-02
  • 打赏
  • 举报
回复
warfee2006:请教如何就修改?(ms没看出来变化)谢谢
sc20184 2007-01-01
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

struct arc_data
{
float x,y;
struct arc_data *next;
};
struct arc_type
{
int id, point;
char name[10];
struct arc_data *data;
struct arc_type *next;
};



void main()
{
FILE *fin,*fout;
struct arc_type *list,*l1,*l2;
struct arc_data *head,*p1,*p2;

fin=fopen("E:\\data.dat","rb");
if(fin==NULL)
{
printf("err");
exit(1);
}

int n1=0;

while(!feof(fin))
{
l1=(struct arc_type *)malloc(sizeof(struct arc_type));
fscanf(fin,"%d,%s%d",&l1->id,&l1->name,&l1->point);

for(int i=0,n2=0;i<l1->point;i++)
{
p1=(struct arc_data *)malloc(sizeof(struct arc_data));
fscanf(fin,"%f,%f",&p1->x,&p1->y);

n2++;
if(n2==1)
head=p1;
else
p2->next=p1;

p2=p1;
}
p2->next=NULL;
l1->data=head;

n1++;
if(n1==1)
list=l1;
else
l2->next=l1;
l2=l1;
}
l2->next=NULL;
fclose(fin);


fout=fopen("E:\\data.dat","w+");
if(fout==NULL)
{
printf("err!");
exit(1);
}

l1=list;
while(l1!=NULL)
{
fprintf(fout,"%d,%s%d\n",l1->id,l1->name,l1->point);
while(l1->data!=NULL)
{
l1->data->x=l1->data->x+1000;
l1->data->y=l1->data->y+500;

fprintf(fout,"%6.1f,%6.1f\n",l1->data->x,l1->data->y);
l1->data=l1->data->next;
}
l1=l1->next;
}
fclose(fout);

}

我实现了第一个问题。可是这个程序为什么只能执行一次?恳请高手指点
sc20184 2007-01-01
  • 打赏
  • 举报
回复
再顶~~~~~~~~~
sc20184 2007-01-01
  • 打赏
  • 举报
回复
我现在最大的问题就是不能从文件中正确的读写数据,帮帮忙啊
caocheng8230 2007-01-01
  • 打赏
  • 举报
回复
好像最后化为一个矩阵运算都.
具体的忘记了.
sc20184 2007-01-01
  • 打赏
  • 举报
回复
自己顶~~~

69,337

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧