Verán, estoy haciendo un programa que lo que hace es que si escribes cierta cantidad en números, este los traslada a letras, por ejemplo: 16 - "dieciséis".
Por ahora sólo estoy con decenas, ya luego lo haré con números mayores, pero tengo un problema, hay valores que sí funcionan, y otros que no. Por ejemplo, 54, 88, 19, y otros con los que no funcionan. Por ejemplo, 18, 87, 84. Al escribir esos números (y otros varios) me manda a la condición incorrecta y escribe lo que no debería.
Las 2 líneas que están en comentario fueron de una prueba para asegurarme que le estaba pasando el parámetro correcto a la función, y ver qué valor tomaba la variable lAux, que efectivamente en algunos casos, toma el incorrecto, por ejemplo, a veces cuando le paso 7 me devuelve un "seis".
Acá les dejaré el código que llevo:
#include <iostream>
#include <string.h>
using namespace std;
string lNumero(int i);
void decimas(int num);
int main(void) {
int num = 0;
cout << "Escribe un numero: ";
cin >> num;
decimas(num);
cout << endl;
return 0;
}
void decimas(int num) {
float aux = (float)num/10;
num /= 10;
aux = (aux - num) * 10;
string lAux = lNumero(aux);
//cout << lAux << endl;
//cout << aux << endl;
switch(num) {
case 0:
cout << lAux;
break;
case 1:
switch((int)aux) {
case 0: cout << "diez"; break;
case 1: cout << "once"; break;
case 2: cout << "doce"; break;
case 3: cout << "trece"; break;
case 4: cout << "catorce"; break;
case 5: cout << "quince"; break;
default: cout << "dieci" << lAux; break;
}
break;
case 2:
if (aux == 0) cout << "veinte";
else cout << "veinti" << lAux;
break;
case 3:
if (aux == 0) cout << "treinta";
else cout << "treinta y " << lAux;
break;
case 4:
if (aux == 0) cout << "cuarenta";
else cout << "cuarenta y " << lAux;
break;
case 5:
if (aux == 0) cout << "cincuenta";
else cout << "cincuenta y " << lAux;
break;
case 6:
if (aux == 0) cout << "sesenta";
else cout << "sesenta y " << lAux;
break;
case 7:
if (aux == 0) cout << "setenta";
else cout << "setenta y " << lAux;
break;
case 8:
if (aux == 0) cout << "ochenta";
else cout << "ochenta y " << lAux;
break;
case 9:
if (aux == 0) cout << "noventa";
else cout << "noventa y " << lAux;
break;
}
}
string lNumero(int i) {
switch(i) {
case 1: return "uno";
case 2: return "dos";
case 3: return "tres";
case 4: return "cuatro";
case 5: return "cinco";
case 6: return "seis";
case 7: return "siete";
case 8: return "ocho";
case 9: return "nueve";
}
return "cero";
}