#include #include #include #include #include #include #include using namespace std; void display_all_restaurants(array & restaurants, int & current_size) { for(int i = 0; i <= current_size - 1; i++) { if(i == current_size - 1) { cout << i << "-" << restaurants[i] << endl; } else { cout << i << "-" << restaurants[i] << ", "; } } } void add_a_restaurant(array & restaurants, int & current_size) { string name; bool correct_entry = true; cout << "please enter name of restaurant: " << endl; cin.ignore(); getline(cin, name); if(current_size >= 16) { cout << "The array already has 16 restaurants and you can't add anymore." << endl; } else { for(int i = 0; i <= current_size - 1; i++) { if(restaurants[i] == name) { correct_entry = false; } } if(correct_entry == true) { restaurants[current_size] = name; current_size++; cout << "you added the restaurant " << name << endl; } else { cout << "this restaurant is already existant" << endl; } } } void remove_a_restaurant(array & restaurants, int & current_size) { string name; bool correct_entry = false; cout << "Please enter name of restaurant you would like to remove: " << endl; cin.ignore(); getline(cin, name); for(int i = 0; i <= current_size -1; i++) { if(i == current_size && restaurants[i] == name) { current_size--; cout << name << " has been removed" << endl; } if(restaurants[i] == name) { restaurants[i] = restaurants[current_size -1]; current_size--; correct_entry = true; cout << name << " has been removed" << endl; } } if(correct_entry == false) { cout << "restaurant does not exist" << endl; } } void shuffle_array(array & restaurants, int current_size) { random_shuffle (&restaurants[0], &restaurants[current_size]); } int round_counter(int current_size) { int round; if(current_size == 16) { round = 4; } else if(current_size == 8) { round = 3; } else if(current_size == 4) { round = 2; } else if(current_size == 2) { round =1; } return round; } int match_counter(int current_size) { int match; if(current_size == 16) { match = 8; } else if(current_size == 8) { match = 4; } else if(current_size == 4) { match = 2; } else if(current_size == 2) { match =1; } return match; } void begin_tournament(array & restaurants, int & current_size) { bool temp_bool = true; bool tourn_running = true; cin.ignore(); string name; int match = match_counter(current_size); int round = round_counter(current_size); int current_round = 1; array temp_array; while(tourn_running == true) { int current_match = 1; int place = 0; temp_bool = true; cin.ignore(); for(int i = 0; i < current_size; i += 2) { while(temp_bool == true) { cout << "which restaurant: " << restaurants[i] << " or " << restaurants[i + 1] << endl; cout << "match " << current_match << "/" << match << " Round " << current_round << "/" << round << endl; getline(cin, name); if(name == restaurants[i] or name == restaurants[i + 1]) { if(name == restaurants[i]) { temp_array[place] = name; } else { temp_array[place] = name; } place ++; temp_bool = false; current_match++; } else { cout << "invalid response " << name << endl; } } temp_bool = true; } while(temp_bool == true) { for(int i = 0; i < place; i++) { restaurants[i] = temp_array[i]; } current_size = current_size/2; if(current_size == 1) { cout << "this is the winner " << restaurants[0] << endl; exit(0); } else { cout << "next round of tournament" << endl; temp_bool = false; } } match = match/2; current_round++; } } void test_size(array & restaurants, int & current_size) { if(current_size ==2 or current_size ==4 or current_size ==8 or current_size == 16) { cout << "you have 2^n" << endl; begin_tournament(restaurants, current_size); } else { cout << "you dont have 2^n number of restaurants, please remove or enter more" << endl; } } int main() { array restaurants = {{ "cafe rio", "india palace", "panda express", "subway", "quiznos", "olive garden", "jimmy johns", "cougareat", }}; bool temp = true; int current_size = 8; srand(time(NULL)); while(temp == true) { int input; cout << "pick a function" << endl; cout << "1)Display all restaurants\n2)Add a restaurant\n3)Remove a restaurant" << endl; cout << "4)Shufflle the array\n5)Begin the tournament" << endl; cin >> input; if(input == 1){ display_all_restaurants(restaurants, current_size); } if(input == 2){ add_a_restaurant(restaurants, current_size); } if(input == 3){ remove_a_restaurant(restaurants, current_size); } if(input == 4){ shuffle_array(restaurants, current_size); } if(input == 5){ test_size(restaurants, current_size); } } }