猜数列游戏( Fibonacci、Luccas、Pell、Triangular)c++实现

来源:互联网 发布:bp神经网络算法 剃度 编辑:程序博客网 时间:2024/06/08 19:54

#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);

}

原创粉丝点击