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

2 篇文章 0 订阅

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

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值