Skip to content

Commit

Permalink
Merge pull request #3982 from pyramsd/reto#7
Browse files Browse the repository at this point in the history
Reto #7 - c++
  • Loading branch information
Roswell468 authored Jul 1, 2023
2 parents 5047024 + 5c675ac commit f1d3406
Showing 1 changed file with 91 additions and 0 deletions.
91 changes: 91 additions & 0 deletions Retos/Reto #7 - EL SOMBRERO SELECCIONADOR [Media]/c++/pyramsd.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>

using namespace std;

int main() {
unordered_map<char, string> casas = {
{'a', "Gryffindor"},
{'b', "Hufflepuff"},
{'c', "Slytherin"},
{'d', "Ravenclaw"}
};

vector<unordered_map<string, vector<string>>> preguntas_y_alternativas = {
{
{"pregunta", {"1. ¿Cuál de las siguientes opciones odiaría más que la gente lo llamara?"}},
{"alternativas", {"a) Cobarte", "b) Egoísta", "c) Ordinario", "d) Ignorante"}}
},
{
{"pregunta", {"2. Después de su muerte ¿qué es lo que más le gustaría que hiciera la gente cuando escuche su nombre?"}},
{"alternativas", {"a) Pide mas historias sobre tus aventuras", "b) Te extraña, pero sonríe", "c) Piensa con admiración tus logros", "d) No me importa lo que la gente piense de mí después de mi muerte, es lo que piensan de mi mientras estoy vivo lo que cuenta"}}
},
{
{"pregunta", {"3. Dada la opción, preferirías inventar una poción que garantizara:"}},
{"alternativas", {"a) Gloria", "b) Amor", "c) Poder", "d) Sabiduría"}}
},
{
{"pregunta", {"4. ¿Cómo le gustaría ser conocido en la historia?"}},
{"alternativas", {"a) El gran", "b) El bueno", "c) El audaz", "d) El sabio"}}
},
{
{"pregunta", {"5. Tú y dos amigos deben cruzar un puente custodiado por un troll de río que insiste en luchar contra uno de ustedes antes de que los deje pasar a todos. Tú:"}},
{"alternativas", {"a) ¿Sugiere que los tres deben luchar? (sin decírselo al troll)", "b) Te ofreces como voluntario", "c) ¿Intentas confundir al troll para que te deje pasar a los tres sin luchar?", "d) Sugerir sorteo para decidir quién de ustedes peleará"}}
}
};

unordered_map<char, int> pnts{
{'a', 0},
{'b', 0},
{'c', 0},
{'d', 0}
};

cout << "\t\t\t\t\t\tBienvenido a Hogwarts!" << endl;
cout << "\t\t\t\t\t\t---------------------" << endl;
cout << "El sombrero seleccionador se encargará de seleccionar tu casa de Hogwarts" << endl;
cout << "--------------------------------------------------------------------------";

bool r_valida = false;

while (!r_valida)
{
try{
for (const auto& pregunta : preguntas_y_alternativas) {
const string& texto_pregunta = pregunta.at("pregunta").at(0);
cout << endl << texto_pregunta << endl;

const vector<string>& alternativas = pregunta.at("alternativas");
for (const string& alternativa : alternativas){
cout << alternativa << endl;
}

char r;
cout << "Respuesta (a, b, c, d): ";
cin >> r;
r = tolower(r);

if (pnts.find(r) == pnts.end()){
throw invalid_argument("Alternativa no válida");
}
pnts[r]++;
}

r_valida = true;

}catch (const exception& e){
cout << "Intentelo de nuevo" << endl;

}
}

char max_pnts = max_element(pnts.begin(), pnts.end(), [](const pair<char, int>& a, const pair<char, int>& b) {
return a.second < b.second;
})->first;

string casa_final = casas[max_pnts];
cout << endl << "Eres " << casa_final << "!" << endl;

};

0 comments on commit f1d3406

Please sign in to comment.