while sentencia que programacion lenguaje else ejemplos condiciones c++ if-statement

que - Usar condiciones mĂșltiples en una sentencia if en C++



sentencia if else (1)

Estoy tratando de crear una declaración if compleja en C ++ que me ahorrará escribir un montón de declaraciones if, me pregunto si este código a continuación realmente tiene sentido o estoy pasando por alto un error.

if(input==choice) { cout << "Tie!" << endl; }else if(input=="rock" && choice=="scissors" || input=="scissors" && choice=="paper" || input="paper" && choice=="rock") { cout << input " beats " << choice << ", you win!" << endl; }else if(input=="rock" && choice=="paper" || input=="scissors" && choice=="rock" || input=="paper" && choice=="scissors"){ cout << choice << " beats " << input << ", you lose!" << endl; }

Lo que intento lograr es:

"if input is x AND choice is y, OR if...."

Básicamente estoy probando múltiples condiciones "if-and" para que se ejecute una sola línea de código si se topa con alguna de las condiciones if-and. La salida arroja un error "no match for ''operator ||''".


Usted tiene un error tipográfico en input="paper" && choice=="rock") , pero en lugar de corregir el error tipográfico, le sugiero que corrija el código. No es de extrañar que haya cometido un error tipográfico en este bloque gigante de condiciones. Tiene mucha lógica de repetición y mezcla con salida. Si gasta algunas líneas en includes, puede guardar algunas en código ...

#include <iostream> #include <string> #include <vector> #include <utility> #include <algorithm> bool win(const std::string& input, const std::string& choice) { static const std::vector<std::pair<std::string, std::string>> wins = { { "rock", "scissors" }, { "scissors", "paper" }, { "paper", "rock" } }; return std::find(wins.begin(), wins.end(), std::make_pair(input, choice)) != wins.end(); } int main() { std::string choice = "paper"; std::string input = "scissors"; if (win(choice, input)) { std::cout << "you win! /n"; } else { std::cout << "you lose! /n"; } }

Como paso siguiente, debe eliminar todas las cadenas, por ejemplo, mediante enumeraciones como se explica en los comentarios.