118k views
3 votes
Write a program that simulates flipping a coin repeatedly and continues until three consecutive heads. are tossed. At that point, your program should display the total number of coin tips that were made the average number of heads. #1 - Write a function to read in the user's information (name & gender) #2 - Write a function to flip the coin and return a bool (heads = true, tails = false) #3 - Write a function to calculate the average of heads vs. total flips #4 - Write a function to output the results Address male users as Mr. and female users as Ms. HINT: Code one function at a time and test it... then add the loop and re-test. Turn in as a single PDF file-Include three (3) test runs. 1-Output (cut and pasted into a txt file in eclipse) 2- Source Code (printed from eclipse - PROPERLY DOCUMENTED) INPUT/OUTPUT - should be formatted as follows - This represents one possible sample run (Class heading should be also displayed) Welcome to coin toss! Get 3 heads in a row to win! What is your name? Ed Peck What is your gender (m/f): M Try to get 3 heads in a row. Good luck Mr. Ed Peck! Press to flip TAIL Press center> to flip HEAD Press to flip HEAD Press center to flip HEAD Press center> to flip HEAD It took you 6 tosses to get 3 heads in a row. On average you flipped heads 67% of the time

User Cpilko
by
4.7k points

1 Answer

2 votes

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 ('\\' == 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;

}

User Omnikrys
by
4.9k points