#程序内容
随机运气加随机时间
核心是rand函数
原本要搭配srand函数
但多次尝试后发现有bug。
#bug内容
1.反应缓慢
2.输入数字无反应并继续运行。源码可见,cin>>读入一个字符。每次赋值m正常运行后总会判断m最终值为“ ”一个空格。所以会错误地跳转到其他子程序。
#核心问题
如何优化算法,从而避免大量if和rand杂糅从而降低运算速度。以及莫名奇妙的输入问题(详见bug内容2)
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
using namespace std;
#define MIN 0
#define MAX 90
int main()
{
char m='0';
int a,b;
for(int i=0;;i++)
{
system("cls");
printf("模拟樱落机器人\n\n扣1 查看今日人品\n扣2 查看脱单时间\n扣3 结束程序\n\n仅供娱乐\n请输入:");
cin>>m;
if(isdigit(m)!=0)
{
if(m=='1')
{
//system("cls");
//cout<<"1111"<<endl;
system("cls");
//srand((unsigned)time(0));
//a=MIN+(int)MAX*rand()/(RAND_MAX + 1);
a=int(rand()%91);
b=int(rand()%2);
if(b==1)
{
if(a!=0) a=-a;
else a=0;
}
else a=int(a);
if(a>=-90&&a<-60) cout<<"Your luck is "<<a<<" That is too bad!\n你的运气是"<<a<<" \n已达成《好运破坏神》成就";
else if(a>=-60&&a<-30) cout<<"Your luck is "<<a<<" That is bad!\n你的运气是"<<a<<" \n已达成《好运终结者》成就 ";
else if(a>=-30&&a<0) cout<<"Your luck is "<<a<<" That is not good!\n你的运气是"<<a<<" \n已达成《好运无缘患者》成就";
else if(a>=0&&a<30) cout<<"Your luck is "<<a<<" That is not bad!\n你的运气是"<<a<<" \n已达成《好运使者》成就";
else if(a>=30&&a<60) cout<<"Your luck is "<<a<<" That is good!\n你的运气是"<<a<<" \n已达成《好运达人》成就";
else if(a>=-30&&a<0) cout<<"Your luck is "<<a<<" That is so good!\n你的运气是"<<a<<" \n已达成《好运大师》成就";
else if(a==90) cout<<"Your luck is "<<a<<" That is really good!\n你的运气是"<<a<<" \n已达成《运气之王》成就";
Sleep(1.0*1000);
system("cls");
m=0;
}
else if(m=='2')
{
//system("cls");
system("cls");
srand((unsigned)time(0));
int f,g,h,j,k,l;
f=int(rand()%2);
g=int(rand()%12);
h=int(rand()%31);
j=int(rand()%24);
k=int(rand()%60);
l=int(rand()%60);
if(f!=0&&g!=0&&h!=0&&j!=0&&k!=0&&l!=0) cout<<"\n你还有"<<f<<"年"<<g<<"月"<<h<<"天"<<j<<"小时"<<k<<"分"<<l<<"秒脱单!"<< "\n加油啊!" ;
else if(f==0&&g!=0&&h!=0&&j!=0&&k!=0&&l!=0) cout<<"\n你还有"<<g<<"月"<<h<<"天"<<j<<"小时"<<k<<"分"<<l<<"秒脱单!"<< "\n加油啊!" ;
else if(f==0&&g==0&&h!=0&&j!=0&&k!=0&&l!=0) cout<<"\n你还有"<<h<<"天"<<j<<"小时"<<k<<"分"<<l<<"秒脱单!"<< "\n加油啊!" ;
else if(f==0&&g==0&&h==0&&j!=0&&k!=0&&l!=0) cout<<"\n你还有"<<j<<"小时"<<k<<"分"<<l<<"秒脱单!"<< "\n加油啊!" ;
else if(f==0&&g==0&&h==0&&j==0&&k!=0&&l!=0) cout<<"\n你还有"<<k<<"分"<<l<<"秒脱单!"<< "\n加油啊!" ;
else if(f==0&&g==0&&h==0&&j==0&&k==0&&l!=0) cout<<"\n你还有"<<l<<"秒脱单!"<< "\n加油啊!" ;
else if(f==0&&g==0&&h==0&&j==0&&k==0&&l==0) cout<<"\n老实交代,你是不是爱神附体了!" ;
Sleep(1.0*1000);
system("cls");
m=0;
}
else if(m=='3')
{
break;
cout<<"程序即将结束"<<endl;
}
else if(m!='1'&&m!='2'&&m!='3')
{
system("cls");
cout<<"你输入的数字 "<<m<<" 没有对应功能"<<endl;
Sleep(0.3*1000);
cout<<"请重新输入"<<endl;
//Sleep(1.0*1000);
cin.clear();
cin.sync();
}
}
else if(isalpha(m)!=0)
{
system("cls");
cout<<"\n你输入的 "<<m<<" 不是数字,请重新输入\n";
Sleep(0.8*1000);
cin.clear();
cin.sync();
}
else
{
system("cls");
cout<<"\n你输入的 "<<m<<" 不是数字,请重新输入\n";
Sleep(0.8*1000);
cin.clear();
cin.sync();
}
}
return 0;
}
完。