一个难题,先给100分,解决后再追加100分
我用的是纯C,编译器是BC5.0
我现在在屏幕上画了一些点,例如p1,p2,p3...p100;我现在要把每个点的坐标记下来,例如p1(x1,y1),p2(x2,y2)......p100(x100,y100),由于每次画的点不是一个定值,有时画10个,有时画20个.我现在要把点p以及p的x,y值记下来,而且还要把他们对应起来,例如p1(x1,y1)...p20(x20,y20).该怎么实现,给我一个例子.谢谢
问题点数:100、回复次数:22Top
1 楼xteaj(半桶水)回复于 2004-09-01 09:55:38 得分 15
struct mypoint
{
int ID;
int x;
int y;
};
struct pointlist
{
struct mypoint data;
struct pointlist *next;
};
用链表实现就可以了,链表的添加和查找自己搞定。
不行就用std::vector<mypoint>Top
2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-01 10:01:57 得分 0
如楼上所说。Top
3 楼flyelf(空谷清音)回复于 2004-09-01 10:07:08 得分 0
没有必要自己写链表,用std::vector or std::list即可Top
4 楼rabo(不哭死人)回复于 2004-09-01 10:10:04 得分 0
如果上面说的,你都不会用。那就用结构数组吧。只是效率低一点。Top
5 楼lixiaosan(小三)回复于 2004-09-01 10:17:15 得分 0
CStringArrayTop
6 楼smileconfess()回复于 2004-09-01 10:26:41 得分 0
用链表,比如CObList.Top
7 楼Paris_Luo(不懂)回复于 2004-09-01 10:42:23 得分 0
链表Top
8 楼fackpear(云梦天竺)回复于 2004-09-01 10:53:29 得分 0
支持用链表 效率高啊 呵呵Top
9 楼ayi176(阿义)回复于 2004-09-01 10:54:39 得分 0
用链表吧Top
10 楼ghxmagic(ghxmagic)回复于 2004-09-01 10:58:15 得分 20
struct mypoint
{
int nIndex;
CSize pos;
};
1. CArray <mypoint, mypoint&> arPoint;
或
2. mypoint *pArrayPoint = new mypoint[NUM];
delete [] mypoint;Top
11 楼liaoxiaoping(我是一棵菜,你要说的明白些)回复于 2004-09-01 11:26:09 得分 0
#include <stdio.h>
#include <stdlib.h>
struct
{
int ID;
int x;
int y;
}mypoint[100];
int j=1;
void main()
{
POINT pt;
GetCursorPos(&pt);
mypoint->ID = j;
mypoint->x = pt.x;
mypoint->y = pt.y;
j++;
}
这样得到的mypoint{{ID:1,x:11,y:22}......}
再画一个点,它只是变成了mypoint{{ID:2,x:41,y:52}......}
而我要的是:mypoint{{ID:1,x:11,y:22},{ID:2,x:41,y:52}......}
该怎么做,解决后就给分,在线等Top
12 楼jazy()回复于 2004-09-01 11:32:59 得分 0
你的mypoint不是数组吗,循环使用mypoint[0],mypoint[1]...就好了Top
13 楼liaoxiaoping(我是一棵菜,你要说的明白些)回复于 2004-09-01 11:37:08 得分 0
怎么循环?
j就是要画的点数,而pt.x,pt.y每一次都不样,mypoint[100]怎么加.写一下,怎么样?Top
14 楼crystal521(【云淡风轻】)回复于 2004-09-01 11:54:32 得分 20
先定义一个结构
struct MyPoints
{
int x;
int y;
};
在使用时采用动态分配内存的方式
MyPoints* p;
p = MyPoints* Malloc(sizeof(MyPoints));
p = MyPoints* Relloc(n * sizeof(MyPoints));
...
free(p);
或者你也可以使用链表:如 xteaj()所说
Top
15 楼zhushizu(从来就没有救世祖)回复于 2004-09-01 12:12:29 得分 0
是呀,我也是想了好久。。关注中。。。Top
16 楼jazy()回复于 2004-09-01 14:19:58 得分 20
struct mypoint
{
int ID;
int x;
int y;
};
int j = 0;
void main()
{
//得到要画的点数MAX_NUM
mypoint *pMyPT = new mypoint[MAX_NUM];
for (j = 0; j < MAX_NUM; j++)
{
//别的操作,改变鼠标位置
POINT pt;
GetCursorPos(&pt);
pMyPT[j].ID = j; //为扩展考虑,需要一个冗余的ID字段
pMyPT[j].x = pt.x;
pMyPT[j].y = pt.y;
j++;
}
...
delete []pMyPT;
pMyPT = NULL;
}
Top
17 楼evlon(阿牛)回复于 2004-09-01 14:33:23 得分 5
|````````|```````````|```````````````````````````````|
| line1 | line2 | | (1)
|________|___________|_______________________________|
| |
|~~~~~~~|
| Point | CList<CPoint,CPoint> myPointList;
|_______|
注(1):CPtrList<myPointList*,myPointList*> myLinesArray;
Top
18 楼Hawk_lp(流浪者)回复于 2004-09-01 15:21:26 得分 0
STL用的!
Top
19 楼liaoxiaoping(我是一棵菜,你要说的明白些)回复于 2004-09-01 16:06:28 得分 0
我的是BC5.0,和纯C,STL管用吗?Top
20 楼ghxmagic(ghxmagic)回复于 2004-09-01 16:13:34 得分 0
那就用数组吧,
new []. delete [] 你会吧Top
21 楼bobob(静思)回复于 2004-09-01 16:23:12 得分 20
define PointNum 100 ;
int i;
for(i = 0 ; 纪录点的条件满足 && i<PointNum ; i++)
把当前点纪录到结构体[i];
最后得到的结构体数组就是你要的东西。
Top
22 楼liaoxiaoping(我是一棵菜,你要说的明白些)回复于 2004-09-01 16:47:59 得分 0
问题结局了,不是用的大家的东西,但是是大家的讨论给了我启示.
怎么追加分数,我不会,该怎么办?
Top




