VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1408|回复: 12

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

[复制链接]

1

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-4 22:20:01 | 显示全部楼层 |阅读模式
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,怎样也调不过,尤其是格式化读写文件!救命啊
回复

使用道具 举报

1

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-5 09:12:01 | 显示全部楼层
自己顶~~~
回复

使用道具 举报

0

主题

36

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-1-5 10:12:01 | 显示全部楼层
好像最后化为一个矩阵运算都.
具体的忘记了.
回复

使用道具 举报

1

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-5 11:39:01 | 显示全部楼层
我现在最大的问题就是不能从文件中正确的读写数据,帮帮忙啊
回复

使用道具 举报

1

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-5 16:48:01 | 显示全部楼层
再顶~~~~~~~~~
回复

使用道具 举报

1

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-6 14:12: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);

}

我实现了第一个问题。可是这个程序为什么只能执行一次?恳请高手指点
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-6 15:12:01 | 显示全部楼层
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;
}
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-6 15:18:02 | 显示全部楼层
l1怎么没释放?
回复

使用道具 举报

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-6 15:30:01 | 显示全部楼层
我不会,但帮你顶一下!!!
回复

使用道具 举报

1

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-11 16:27:01 | 显示全部楼层
china1839:请教如何就修改?(ms没看出来变化)谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表