Harry Potter Sorting Hat Quiz

My code compiles with no errors, asks the first question, collects input, then skips all the other questions after printing them and ends the program. I do have std::cin >> for the other 3 questions but its not firing. I can not figure out why.

here is my code.

#include <iostream>

int main(){

//The magic starts here

int gryffindor = 0;

int hufflepuff = 0;

int ravenclaw = 0;

int slytherin = 0;

int answer1;

int answer2;

int answer3;

int answer4;

std::cout << "The Sorting Hat Quiz!\n";

std::cout << "Q1) When I'm dead, I want people to remember me as:\n\n";

std::cout << "1) The good\n";

std::cout << "2) The Great\n";

std::cout << "3) The Wise\n";

std::cout << "4) The Bold\n";

std::cin >> answer1;

if (answer1 == 1) {  

  hufflepuff++;

}

else if (answer1 == 2) { 

  slytherin++;

}

else if (answer1 == 3) { 

  ravenclaw++;

}

else if (answer1 == 4) { 

  gryffindor++;

}

else {              

  std::cout << "Invalid input\n";

}

std::cout << "Q2) Dawn or Dusk?\n\n";

std::cout << "1) Dawn\n";

std::cout << "2) Dusk\n";

std::cin >> answer2;

if (answer2 == 1) {  

  gryffindor++; ravenclaw++;

}

else if (answer2 == 2) { 

  slytherin++; hufflepuff++;

}

else {              

  std::cout << "Invalid input\n";

}

std::cout << "Q3) Which kind of instrument most pleases your ear?\n\n";

std::cout << "1) The violin\n";

std::cout << "2) The trumpet\n";

std::cout << "3) The piano\n";

std::cout << "4) The drum\n";

std::cin >> answer3;

if (answer3 == 1) {  

  slytherin++;

}

else if (answer3 == 2) { 

  hufflepuff++;

}

else if (answer3 == 3) { 

  ravenclaw++;

}

else if (answer1 == 4) { 

  gryffindor++;

}

else {              

  std::cout << "Invalid input\n";

}

std::cout << "Q4) Which road tempts you the most?\n\n";

std::cout << "1) The wide, sunny grassy lane\n";

std::cout << "2) The narrow, dark, lantern lit alley\n";

std::cout << "3) The twisting, leaf-strewn path through the woods\n";

std::cout << "4) The cobbled street lines (ancient buildings)\n";

std::cin >> answer4;

if (answer4 == 1) {  

  hufflepuff++;

}

else if (answer4 == 2) { 

  slytherin++;

}

else if (answer4 == 3) { 

  gryffindor++;

}

else if (answer4 == 4) { 

  ravenclaw++;

}

else {              

  std::cout << "Invalid input\n";

}

int max = 0;

std::string house;

if (gryffindor > max) {

 

  max = gryffindor;

  house = "Gryffindor";

 

}

 

if (hufflepuff > max) {

 

  max = hufflepuff;

  house = "Hufflepuff";

 

}

 

if (ravenclaw > max) {

 

  max = ravenclaw;

  house = "Ravenclaw";

 

}

 

if (slytherin > max) {

 

  max = slytherin;

  house = "Slytherin";

 

}

 

std::cout << house << "!\n";

}

Is it skipping inputs in the CC terminal? It runs fine for me in a repl.

As a side note might be good to point out you’re not handling invalid answers. If you’ve learned about while loops yet, it could be a great time to use them.

Aweso so it’s a Codecademy issue not me. I haven’t learned loops in C++ yet. Thank you for the help I was very frustrated looking for a bug that wasn’t there. :joy:

1 Like