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:
Código
#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"; }