求助高手帮我看看一个很简单,看下那地方错了,修改一下 谢谢
#include<graphics.h> #include<conio.h>
#include<math.h>
#include <iostream>
#include <iomanip>
#define N 70
using namespace std;
class Chuquan
{
private:
int a[N];
public:
int m,n,s[70]; //m:表示人数 ,n:表示要出列的数
void D_num(); //给每人定一个号
void setdata(); // 输入总人数及要出列的数...
void Dis_sequence(); //输出出圈顺序
void Gra_modeling(); //图形模拟
};
void Chuquan::D_num() //给每人定一个号
{
int i;
for (i=0;i<N;i++)
a[i]=i+1;
}
void Chuquan::setdata() // 输入总人数及要出列的数...
{
against:
cout<<endl<<" 请输入玩出圈游戏的总人数(不超过70人):";
cin>>m;
if(m>70)
{
cout<<endl<<"人数过多(超过70人),请重新开始 "<<endl;
goto against;
}
cout<<endl<<" 请输入报号时,任意一个要出列的数:";
cin>>n;
}
void Chuquan::Dis_sequence()//输出出圈顺序
{
cout<<endl<<"此游戏的出圈顺序为:"<<endl;
int i,j,k=-1,t=0;
for(i=0;i<m;i++)
{
j=1;
while(j<=n) //j<=n :例如 当要求报数为5的出列时,则从开始报数的那个人到报数为5的之间还要存在四个人...
{
k++;
if(k==m) //当循环到最后的那个人时,返回到第一个位置
k=0;
if(a[k]!=0) //判断是否存在
j++;
}
s[t]=a[k];//把要出列的号存储在s[70]中
t++;
getchar();
Gra_modeling();
cout<<setw(20)<<a[k]<<" 请按Enter键继续";
a[k]=0; //出圈后的记为0
}
cout<<endl;
}
void Chuquan::Gra_modeling()//图形模拟
{
char b[70];
initgraph(900,680);// 初始化 900 x 680 的绘图窗口
setfillstyle(GREEN);//填充颜色
bar(0,0,900,680);
circle(450, 340, 300);//画圆
int x,y;
for ( int i=0;i<m;i++)
{
x=450+(int)(300*sin(i*2*PI/m));
y=340-(int)(300*cos(i*2*PI/m));
setfillstyle(BLUE);
bar (x,y,x-7,y-7);
sprintf(b,"(%d)",i+1);
outtextxy(x-3,y-3,b);
outtextxy(285,10," 请按Enter键继续,红色的位置表示已出圈");
for(int t=0;t<m;t++) //出圈后的位置填充红色
if (s[t]==i+1)
{
setfillstyle(RED);
bar(x,y,x-10,y-10);
}
}
getch();
closegraph();
}
int main()
{
Chuquan A;
A.setdata();
A.D_num();
A.Dis_sequence();
system("pause");
return 0;
}