楼主菜鸟一只写的随机取点程序,没有执行出来呀,大家给看看怎…
easyx吧
全部回复
仅看楼主
level 4
#include<iostream>
#include<cmath>
#include<cstdlib>
#include <graphics.h>
#include <conio.h>
#include<time.h>
#include<stdio.h>
#include<math.h>
void main()
{ initgraph(5000, 5000); srand((int)time(0));
int j,n,x,y;
int aj_x,aj_y,bj_x,bj_y,cj_x,cj_y;
int d1,d2,d3;int r = rand() % 500+ 300;
char s[10],a1[20],b1[20],c1[20],a2[20],b2[20],c2[20],m[10];
sprintf(s, "%d", r);
setaspectratio(0.25,0.25);
outtextxy(3770,1910,s);
setaspectratio(0.25,0.25);
for(x=700;x<=4100;x=x+r)
for(y=1300;y<=1800;y=y++)
putpixel(x,y,YELLOW);
setaspectratio(0.25,0.25);
rectangle(800,1645,r,1540);
setlinecolor(GREEN);
setlinestyle(PS_DASHDOT,NULL,5);
rectangle(700,1465,4100,1675);
int max=3200/r+1;
sprintf(m, "%d", max);
outtextxy(3770,2000,m);
{for(j=0;j<=max;n=800+j*r,j++)
{do{srand(time(NULL));
aj_x=rand()%r+n;
bj_x=rand()%r+n;
cj_x=rand()%r+n;
aj_y=rand()%75+1465;
bj_y=rand()%75+1465;
cj_y=rand()%75+1465;
d1=sqrt((aj_x-bj_x)^2+(aj_y-bj_y)^2);
d2=sqrt((aj_x-cj_x)^2+(aj_y-cj_y)^2);
d3=sqrt((bj_x-cj_x)^2+(bj_y-cj_y)^2);}
while(d1<=50||d2<=50||d3<=50);
putpixel(aj_x,aj_y,RED);
putpixel(bj_x,bj_y,RED);
putpixel(cj_x,cj_y,RED);
sprintf(a1,"%d",aj_x);
sprintf(a2,"%d",aj_y);
sprintf(b1,"%d",bj_x);
sprintf(b2,"%d",bj_y);
sprintf(c1,"%d",cj_x);
sprintf(c2,"%d",cj_y);
outtextxy(200,200,a1);
outtextxy(400,200,a2);
outtextxy(200,200*j,b1);
outtextxy(400,200*j,b2);
outtextxy(200,200*(j+1),c1);
outtextxy(400,200*(j+1),c2);}}
getch();
closegraph();}
2013年04月11日 02点04分 1
level 10
应该是do while语句的问题,不能执行下面的代码,我感觉应该是while要改成if
随便说说阿,因为问题没看懂。。。。。。
2013年04月11日 04点04分 2
哪没看懂呀?确实没有输出点呀...
2013年04月11日 05点04分
回复 浅浅久久333 :其实你可以试试调试功能,比如单步执行,就是一直按F10,说不定能找出问题。。。。。。其实我的意思是,如果能有格式或者能有点注释会更好。。。
2013年04月11日 09点04分
回复 JJ17603 :哦。。。原来是因为这个不清楚呀,好的以后贴程序会写的明白点的,菜鸟一个没啥经验,见谅见谅。。。。谢谢了!
2013年04月11日 13点04分
回复 浅浅久久333 :其实我这个程序的意思是在一定的范围内随机取三个点,要求这三个点之间的距离大于50,但是这个范围不是固定的一个范围for(j=0;j<=max;n=800+j*r,j++)既控制了要取点的个数,又控制取点的范围不断的向右移动 我听你的意见改成if之后能出来点了,可是每个区的点的位置都是一样的
2013年04月11日 13点04分
level 7
你大概想得到什么样的结果?
2013年04月12日 02点04分 4
max分区,每个分区里随机取三个点,要求这三个点两两距离大于50并输出这些点的坐标
2013年04月12日 04点04分
回复 浅浅久久333 :是max个分区?
2013年04月12日 05点04分
回复 97xuzhuoyun :嗯呢我把分区数定义为max了
2013年04月12日 06点04分
level 4
#include<iostream>
#include<cmath>
#include<cstdlib>
#include <graphics.h>
#include <conio.h>
#include<time.h>
#include<stdio.h>
#include<math.h>
void main()
{ initgraph(5000, 5000); srand((int)time(0));
int j,n,x,y;
int aj_x,aj_y,bj_x,bj_y,cj_x,cj_y;
int d1,d2,d3;
int r = rand() % 500+ 300;
char s[10],a1[20],b1[20],c1[20],a2[20],b2[20],c2[20],m[10];
sprintf(s, "%d", r);
setaspectratio(0.25,0.25);
outtextxy(3770,1910,s);
setaspectratio(0.25,0.25);
for(x=700;x<=4100;x=x+r)
for(y=1300;y<=1800;y=y++)
putpixel(x,y,YELLOW);
setlinecolor(GREEN);
setlinestyle(PS_DASHDOT,NULL,5);
rectangle(700,1465,4100,1675);
int max=3200/r;
sprintf(m, "%d", max);
outtextxy(3770,2000,m);
{for(j=0;j<=max;n=700+j*r)
{srand(time(0));
aj_x=rand()%r+n;
bj_x=rand()%r+n;
cj_x=rand()%r+n;
aj_y=rand()%75+1465;
bj_y=rand()%75+1465;
cj_y=rand()%75+1465;
d1=sqrt((aj_x-bj_x)^2+(aj_y-bj_y)^2);
d2=sqrt((aj_x-cj_x)^2+(aj_y-cj_y)^2);
d3=sqrt((bj_x-cj_x)^2+(bj_y-cj_y)^2);
if(d1>50&&d2>50&&d3>50);
j++;
putpixel(aj_x,aj_y,RED);
putpixel(bj_x,bj_y,RED);
putpixel(cj_x,cj_y,RED);
sprintf(a1,"%d",aj_x);
sprintf(a2,"%d",aj_y);
sprintf(b1,"%d",bj_x);
sprintf(b2,"%d",bj_y);
sprintf(c1,"%d",cj_x);
sprintf(c2,"%d",cj_y);
outtextxy(200,200,a1);
outtextxy(400,200,a2);
outtextxy(200,200*j,b1);
outtextxy(400,200*j,b2);
outtextxy(200,200*(j+1),c1);
outtextxy(400,200*(j+1),c2);}}
getch();
closegraph();}
2013年04月12日 06点04分 5
第37行后面加分号就表示,这句if没有作用了。。。还有产生的那6个随机数,加上这一行的话srand(time(0)),好像每次都一样,这楼主得了解下随机数的产生原理,最好自己测试下,是不是楼主要的那种随机数。最后送个链接关于调试的,会用调试很有帮助的:http://www.easyx.cn/skills/View.aspx?id=16
2013年04月12日 08点04分
回复 JJ17603 :Thank you.....
2013年04月13日 10点04分
level 7
lz
[无效] ,程序改好了
你的那个if(d1>50&&d2>50&&d3>50);是完全不起作用的,判断完跟个空语句?
还有for前面的大括号是什么意思?
我大概是这么做的:
先随机点1
再随机点2,同时判断点1与点2的距离(不足50,重新随机;大于50,跳出循环)
再随机点3的坐标,再判断点3与其他点的距离(不足50,重新随机;大于50,跳出循环)
3个点都确定之后,再操作下一个分区
以此类推.....
麻烦lz以后多写点注释,稍微写一点,总比没有强
坑爹百度吞格式,只有发网盘链接了
http://pan.baidu.com/share/link?shareid=475155&uk=420543002
2013年04月12日 20点04分 7
嗯嗯。。。好的好的。。。以后会写注释的。。。谢谢啦。。。
2013年04月13日 10点04分
1