#include<iostream>
#include<math.h>
#include<vector>
using namespace std;
class findroot{
private:
double a,b,c,d,x1,x2;
public:
findroot(double x,double y,double z);
void find();
void display();
};
class seqlist{
private:
int num;
char name[10];
public:
int getnum(){return num;}
void dispname(){cout<<name;}
void setnum(int a){num=a;}
void setname(char b[]){strcpy(name,b);}
};
void findit();
void handle_menu(void);
int menu_select();
void game1();
void game2();
void joseph(seqlist [],int);
void joseph(vector<seqlist>&);
findroot::findroot(double x,double y,double z)
{
a=x;b=y;c=z;
d=b*b-4*a*c;
}
void findroot::find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
return;
}
else if(d==0)
{
x1=x2=-b/(2*a);
return;
}
else
{
x1=-b/(2*a);
x2=sqrt(-d)/(2*a);
}
}
void findroot::display()
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
return;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
return;
}
else
{
cout<<"x1="<<x1<<"+"<<x2<<"i"<<endl;
cout<<"x2="<<x1<<"-"<<x2<<"i"<<endl;
}
}
void fintit()
{
double a,b,c;
cout<<"这是个求方程ax2+bx+c=0的根的程序。"<<endl;
for(;;)
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0)
{
getchar();
return;
}
cout<<"输入方程系数b:";
cin>>b;
cout<<"输入方程系数c:";
cin>>c;
findroot obj(a,b,c);
obj.find();
obj.display();
}
}
void joseph(seqlist c[],int length)
{
int m;
cout<<"please input first interval m(m<=20)";
cin>>m;
while(m>20)
{
cout<<"it is too large.please input another number:\n";
cin>>m;
}
cout<<"please input code:"<<endl;
getchar();
char s[10];
for(int i=0;i<length;i++)
{
cout<<"no"<<i+1<<"个人的名字:";
gets(s);
c[i].setname(s);
}
i=-1;
int j,k;
for(k=1;k<=length;k++)
{
j=0;
while(j<m)
{
i++;
if(i==length)
i=0;
if(c[i].getnum()!=0) j++;
}
if(k==length) break;
c[i].dispname();
cout<<",";
c[i].setname(0);
}
c[i].dispname();
cout<<endl;
}
void game1()
{
const int n=30;
int length=0;
cout<<"please input the munber of people:";
cin>>length;
seqlist c[n];
for(int i=0;i<length;i++)
{
c[i].setnum(i+1);
c[i].setname(" ");
}
joseph(c,length);
}
void game2()
{
int length=0;
cout<<"please input the munber of people:";
cin>>length;
vector<seqlist>c(length);
for(int i=0;i<length;i++)
{
c[i].setnum(i+1);
c[i].setname(" ");
}
joseph(c);
}
void joseph(vector<seqlist>&c)
{
int m;
cout<<"please input first interval m(m<=20)";
cin>>m;
while(m>20)
{
cout<<"it is too large.please input another number:\n";
cin>>m;
}
cout<<"please input code:"<<endl;
getchar();
char s[10];
for(int i=0;i<c.size();i++)
{
cout<<"no"<<i+1<<"个人的名字:";
gets(s);
c[i].setname(s);
}
i=-1;
int j,k;
vector<seqlist>::iterator p;
p=c.begin();
int length=c.size();
for(k=1;k<=length;k++)
{
j=0;
while(j<m)
{
i++;
if(i==c.size())
i=0;
j++;
}
if(k==length) break;
c[i].dispname();
cout<<",";
c.erase (p+i);
--i;
}
c[i].dispname();
cout<<endl;
}
void main()
{
handle_menu();
}
void handle_menu(void)
{
for(;;)
{
switch(menu_select())
{
case 1:
findit();
break;
case 2:
game1();
break;
case 3:
game2();
break;
case 4:
cout<<"\t再见!\n";
return;
}
}
}
int menu_select()
{
char s[2];
int cn;
cout<<"\t1.解一元二次方程\n";
cout<<"\t2.出圈游戏之一\n";
cout<<"\t3.出圈游戏之二\n";
cout<<"\t4.退出程序\n";
cout<<"\t选择1-4: ";
for(;;)
{
gets(s);
cn=atoi(s);
if(cn<1||cn>4)
printf("\n\t输入错误,重选1-4: ");
else
break;
}
return cn;
}
--------------------Configuration: practic2 - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol "void __cdecl findit(void)" (?findit@@YAXXZ)
Debug/practic2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
practic2.exe - 2 error(s), 0 warning(s)