Answer and Explanation:
#include <iostream>
#include <string>
#include <time.h>
#include <vector>
using namespace std;
//Takes user info
int user_info(string *name,char *gender){
char G;
cout<<"What is your name?: ";
getline(cin, *name);
cout<<"What is your gender(m/f):";
cin>>G;
cout<<endl;
*gender = tolower(G);
return 0;
}
//Toss coin(part 2)
bool coin_toss(double seed){
double r;
r = (double)seed/(double)RAND_MAX;
//cout<<r;
if (r<0.5) return true;
return false;
}
//check results
float toss_result(vector<char> v,int *h){
int num_heads=0;
int num_toss = v.size();
*h = 0;
for(int i=0;i<num_toss;i++){
if(v[i]=='h'){num_heads++;(*h)++;}
}
return (float)num_heads/(float)num_toss;
}
void show_result(int total_num,int head_num,float ratio){
cout<<"it took you "<<total_num<<" tosses to get 3 heads in a row"<<endl;
cout<<"on average you flipped heads "<<(ratio*100)<<"% of the time"<<endl;
}
int main()
{
string name;
char gender;
string K; //Mr or Mrs
cout<<"Welcome to coin toss! Get 3 heads in row to win!"<<endl;
//part 1
user_info(&name,&gender);
if(gender == 'f') K = "Mrs.";
else K = "Mr.";
cout<<"Try to get 3 heads in a row. Good luck "<<K<<name<<"!"<<endl;
char dummy = getchar();
//part 2
int num_toss;
vector<char> toss_results;//store toss results
bool result;//result of toss
srand(time(0));
while(true){
//cout<<rand()<<endl;
result = coin_toss(rand());
cout<<"Press <enter> to flip"<<endl;
while (1)
{
if ('\n' == getchar())
break;
}
if(result) {toss_results.push_back('h');cout<<"HEAD"<<endl;}
else {toss_results.push_back('t');cout<<"TAIL"<<endl;}
num_toss = toss_results.size();
if(num_toss>=3){
if ((toss_results[num_toss-1] == 'h')&&(toss_results[num_toss-2] == 'h')&&(toss_results[num_toss-3] == 'h')){
break;
}
}
}
//part 3
float ratio_head;
int num_of_heads;
ratio_head = toss_result(toss_results,&num_of_heads);
//part 4
show_result(toss_results.size(),num_of_heads,ratio_head);
return 0;
}