Estoy tratando de crear un programa C++ para devolver un número (deletreado) cuando el usuario ingresa un valor entero entre 0 y 9, ¿alguien puede averiguar dónde me equivoqué? ¡Gracias por adelantado!
#include <iostream> using namespace std; int main(){ int numinput; string numberWritten; cout << "Enter a whole number between 0 and 9" << endl; cin >> numinput; switch (numinput) { case 0: numberWritten = "Zero"; break; case 1: numberWritten = "One"; break; case 2: numberWritten = "Two"; break; case 3: numberWritten = "Three"; break; case 4: numberWritten = "Four"; break; case 5: numberWritten = "Five"; break; case 6: numberWritten = "Six"; break; case 7: numberWritten = "Seven"; break; case 8: numberWritten = "Eight"; break; case 9: numberWritten = "Nine"; break; default: "Not a number I know"; return numberWritten; } }
Reemplace el switch
con una matriz:
static const char * numbers_text[] = { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", }; //... cout << "Enter a whole number between 0 and 9" << endl; cin >> numinput; if ((num_input >= 0) && (num_input <= 9)) { cout << numbers_text[numinput] << "\n"; } else { cout << "Unsupported number.\n"; }
El método de matriz o búsqueda evita cualquier problema con una declaración de switch
.
Menos líneas de código, menos posibilidades de inyectar errores.
No puede devolver int si int main()
devuelve una cadena o simplemente lo dice el compilador:
no suitable conversion function from "std::string" to "int" exists
así es como lo arreglas:
#include <iostream> #include <string> using namespace std; int main() { int numinput; string numberWritten; cout << "Enter a whole number between 0 and 9" << endl; cin >> numinput; switch (numinput) { case 0: numberWritten = "Zero"; break; case 1: numberWritten = "One"; break; case 2: numberWritten = "Two"; break; case 3: numberWritten = "Three"; break; case 4: numberWritten = "Four"; break; case 5: numberWritten = "Five"; break; case 6: numberWritten = "Six"; break; case 7: numberWritten = "Seven"; break; case 8: numberWritten = "Eight"; break; case 9: numberWritten = "Nine"; break; default: numberWritten = "Not a number I know"; break; } if(numinput >= 0 && numinput <= 9) { cout << "The number you entered is " << numberWritten << endl; } else { cout << numberWritten << endl; } cout << "The number you entered is " << numberWritten << endl; return 0; }
Pido disculpas, olvidé probar el valor predeterminado, ahora funciona perfectamente.
El interruptor nunca llegará a la
return number
Como todavía está dentro de las llaves. En el interruptor, se detendrá en el valor predeterminado .
Su función es int main y está tratando de devolver una cadena con numberWritten.
De esta manera funciona
#include <iostream> using namespace std; int main() { int numinput; string numberWritten; cout << "Enter a whole number between 0 and 9" << endl; cin >> numinput; switch (numinput) { case 0: numberWritten = "Zero"; break; case 1: numberWritten = "One"; break; case 2: numberWritten = "Two"; break; case 3: numberWritten = "Three"; break; case 4: numberWritten = "Four"; break; case 5: numberWritten = "Five"; break; case 6: numberWritten = "Six"; break; case 7: numberWritten = "Seven"; break; case 8: numberWritten = "Eight"; break; case 9: numberWritten = "Nine"; break; default: "Not a number I know"; } cout << numberWritten << endl; return 0; }