adding cs142 code
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
CXXFLAGS=-Wall -g -std=c++0x
|
||||
all: add-display
|
||||
clean:
|
||||
rm -vf add-display
|
||||
test: all
|
||||
./add-display
|
||||
@@ -0,0 +1,211 @@
|
||||
#include <iostream>
|
||||
#include <array>
|
||||
#include <time.h>
|
||||
#include <ctime>
|
||||
#include <functional>
|
||||
#include <cstdlib>
|
||||
#include <algorithm>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void display_all_restaurants(array<string, 16> & 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<string, 16> & 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<string, 16> & 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<string, 16> & 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<string, 16> & 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<string,8> 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<string,16> & 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<string,16> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
#include <iostream>
|
||||
#include <array>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
array<string,16> test;
|
||||
for(unsigned int i = 0; i < test.size(); i++) {
|
||||
string a;
|
||||
cout << i << " enter name" << endl;
|
||||
cin >> a;
|
||||
test[i] = a;
|
||||
|
||||
}
|
||||
int a = 0;
|
||||
cout << "i++" << endl;
|
||||
for(unsigned int i = 0; i < test.size(); i++) {
|
||||
cout << test[i] << "-" << i << " /";
|
||||
}
|
||||
cout << "" << endl;
|
||||
cout << "i--" << endl;
|
||||
for(unsigned int i = 15; i > 0; i--) {
|
||||
cout << test[i] << "-" << i << " /";
|
||||
}
|
||||
cout << "" << endl;
|
||||
cout << test.size() << " size of thing" << endl;
|
||||
cout << "" << endl;
|
||||
for(unsigned int i = 0; i < test.size(); i++) {
|
||||
if(test[i] == "derek") {
|
||||
a = i;
|
||||
}
|
||||
}
|
||||
for(a; a < test.size(); a++) {
|
||||
int b = a;
|
||||
test[a] = test[b++];
|
||||
}
|
||||
cout << "something happening here" << a << " is where derek is" << endl;
|
||||
for(unsigned int i = 0; i < test.size(); i++) {
|
||||
cout << test[i] << "-" << i << " /";
|
||||
}
|
||||
cout << "" << endl;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
derek
|
||||
colleen
|
||||
adeline
|
||||
sylas
|
||||
emmett
|
||||
stephen
|
||||
vanessa
|
||||
mardson
|
||||
4
|
||||
1
|
||||
Reference in New Issue
Block a user