#include<iostream>
#include<string>
#include<vector>
#include<fstream>
using namespace std;
int main()
{
long Fibonacci(int index);
long Luccas(int index);
long Pell(int index);
long Triangular(int index);
long Square(int index);
long Pentagonal(int index);
cout<<"欢迎参加猜数字游戏,请先报上你的大名: ";
string usr_name;
cin>>usr_name;
int num_tries;
int num_cor;
ifstream infile("F:\\guess_number.txt");
if (! infile)
{
cout<<"打开文件失败!";
}
else
{
string name;
int nt;
int nc;
while (infile>>name)
{
infile>>nt>>nc;
if (name==usr_name)
{
cout<<"欢迎再次答题, "<<usr_name
<<"你目前的分数是 : 猜了"<<nt<<"次,猜中"<<nc<<"次!\n祝你好运!\n";
num_tries=nt;
num_cor=nc;
}
else
{
cout<<usr_name<<",欢迎你的到来,你会爱上这个游戏的!\n";
num_tries=0;
num_cor=0;
}
}
}
bool next_seq=true;
while (next_seq==true )
{
cout<<"请你选择数列(Fibonacci(用1表示)、Luccas(2)、Pell(3)、Triangular(4)、Square(5)、Pentagonal(6)): ";
int seq;
cin>>seq;
bool go_for_next=true;
int i;
while ((go_for_next==true))
{
long usr_guess;
long truth_number;
bool got_it=false;
bool go_for_it=true;
switch (seq)
{
case 1:
cout<<"这个序列的前两个元素为: "<<Fibonacci(1)<<"、"<<Fibonacci(2)
<<"你想猜数列中的第几个数: ";
cin>>i;
truth_number=Fibonacci(i);
break;
case 2:
cout<<"这个序列的前两个元素为: "<<Luccas(1)<<"、"<<Luccas(2)
<<"你想猜数列中的第几个数: ";
cin>>i;
truth_number=Luccas(i);
break;
case 3:
cout<<"这个序列的前两个元素为: "<<Pell(1)<<"、"<<Pell(2)
<<"你想猜数列中的第几个数: ";
cin>>i;
truth_number=Pell(i);
break;
case 4:
cout<<"这个序列的前两个元素为: "<<Triangular(1)<<"、"<<Triangular(2)
<<"你想猜数列中的第几个数: ";
cin>>i;
truth_number=Triangular(i);
break;
case 5:
cout<<"这个序列的前两个元素为: "<<Square(1)<<"、"<<Square(2)
<<"你想猜数列中的第几个数: ";
cin>>i;
truth_number=Square(i);
break;
case 6:
cout<<"这个序列的前两个元素为: "<<Pentagonal(1)<<"、"<<Pentagonal(2)
<<"你想猜数列中的第几个数: ";
cin>>i;
truth_number=Pentagonal(i);
break;
}
while((got_it==false) && (go_for_it==true))
{
cout<<"请输入你所猜的值:";
cin>>usr_guess;
num_tries++;
if (usr_guess==truth_number)
{
got_it=true;
num_cor++;
cout<<"你想接着猜这个数列吗?(Y/N)? ";
char try_next;
cin>>try_next;
if(try_next=='N' try_next=='N')
{
go_for_next=false;
cout<<"你想尝试另一个数列吗?(Y/N)? ";
char try_nextseq;
cin>>try_nextseq;
if(try_nextseq=='N' try_nextseq=='n')
{
next_seq=false;
cout<<"有些结束了!\n"
<<"你的分数是 : 猜了"<<num_tries<<"次,猜中"<<num_cor<<"次!\n";
}
}
}
else
{
cout<<"你猜错了,想接着尝试吗?(Y/N) ";
char usr_rsp;
cin>>usr_rsp;
if(usr_rsp=='N' usr_rsp=='n')
{
go_for_it=false;
}
cout<<"你还想继续猜这个数列吗? ";
char try_next;
cin>>try_next;
if(try_next=='N' try_next=='N')
{
go_for_next=false;
cout<<"你想尝试另一个数列吗?(Y/N)? ";
char try_nextseq;
cin>>try_nextseq;
if(try_nextseq=='N' try_nextseq=='n')
{
next_seq=false;
cout<<"有些结束了!\n"
<<"你的分数是 : 猜了"<<num_tries<<"次,猜中"<<num_cor<<"次!\n";
}
}
}
}
}
}
return 0;
}
long Fibonacci(int index)
{
if(index>2)
return (Fibonacci(index-1)+Fibonacci(index-2));
else
return 1;
}
long Luccas(int index)
{
if(index>2)
return (Luccas(index-1)+Luccas(index-2));
else if (index==2)
return 3;
else
return 1;
}
long Pell(int index)
{
if(index>2)
return (2*Pell(index-1)+Pell(index-2));
else if (index==2)
return 2;
else
return 1;
}
long Triangular(int index)
{
if(index>1)
return (Triangular(index-1)+index);
else
return 1;
}
long Square(int index)
{
return index*index;
}
long Pentagonal(int index)
{
return (index*(3*index-1)/2);
}