elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Problema] Incorrecta selección del Switch.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Problema] Incorrecta selección del Switch.  (Leído 1,610 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
[Problema] Incorrecta selección del Switch.
« en: 30 Septiembre 2015, 02:15 am »

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:

Código
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. string lNumero(int i);
  7. void decimas(int num);
  8.  
  9. int main(void) {
  10.  
  11.    int num = 0;
  12.  
  13.    cout << "Escribe un numero: ";
  14.        cin >> num;
  15.  
  16.    decimas(num);
  17.    cout << endl;
  18.  
  19.    return 0;
  20. }
  21.  
  22. void decimas(int num) {
  23.    float aux = (float)num/10;
  24.    num /= 10;
  25.    aux = (aux - num) * 10;
  26.  
  27.    string lAux = lNumero(aux);
  28.    //cout << lAux << endl;
  29.    //cout << aux << endl;
  30.  
  31.    switch(num) {
  32.    case 0:
  33.        cout << lAux;
  34.    break;
  35.    case 1:
  36.        switch((int)aux) {
  37.            case 0: cout << "diez"; break;
  38.            case 1: cout << "once"; break;
  39.            case 2: cout << "doce"; break;
  40.            case 3: cout << "trece"; break;
  41.            case 4: cout << "catorce"; break;
  42.            case 5: cout << "quince"; break;
  43.            default: cout << "dieci" << lAux; break;
  44.        }
  45.    break;
  46.    case 2:
  47.        if (aux == 0) cout << "veinte";
  48.        else cout << "veinti" << lAux;
  49.    break;
  50.    case 3:
  51.        if (aux == 0) cout << "treinta";
  52.        else cout << "treinta y " << lAux;
  53.    break;
  54.    case 4:
  55.        if (aux == 0) cout << "cuarenta";
  56.        else cout << "cuarenta y " << lAux;
  57.    break;
  58.    case 5:
  59.        if (aux == 0) cout << "cincuenta";
  60.        else cout << "cincuenta y " << lAux;
  61.    break;
  62.    case 6:
  63.        if (aux == 0) cout << "sesenta";
  64.        else cout << "sesenta y " << lAux;
  65.    break;
  66.    case 7:
  67.        if (aux == 0) cout << "setenta";
  68.        else cout << "setenta y " << lAux;
  69.    break;
  70.    case 8:
  71.        if (aux == 0) cout << "ochenta";
  72.        else cout << "ochenta y " << lAux;
  73.    break;
  74.    case 9:
  75.        if (aux == 0) cout << "noventa";
  76.        else cout << "noventa y " << lAux;
  77.    break;
  78.    }
  79. }
  80.  
  81. string lNumero(int i) {
  82.    switch(i) {
  83.    case 1: return "uno";
  84.    case 2: return "dos";
  85.    case 3: return "tres";
  86.    case 4: return "cuatro";
  87.    case 5: return "cinco";
  88.    case 6: return "seis";
  89.    case 7: return "siete";
  90.    case 8: return "ocho";
  91.    case 9: return "nueve";
  92.    }
  93.    return "cero";
  94. }
  95.  
  96.  


En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [Problema] Incorrecta selección del Switch.
« Respuesta #1 en: 30 Septiembre 2015, 03:00 am »

Para sacar el último dígito de un número basta con utilizar el operador de módulo aux = num %10;

Código
  1. void decimas(int num) {
  2.  
  3.   int aux = num%10;
  4.   num /= 10;
  5.  
  6.   string lAux = lNumero(aux);
  7.   .
  8.   .
  9.   .
  10. }
  11.  
modifica eso y estás listo.


« Última modificación: 30 Septiembre 2015, 03:18 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con funcion, Metodo de seleccion
Programación C/C++
krowa 7 4,485 Último mensaje 24 Octubre 2011, 19:54 pm
por krowa
Problema Con Selección De Fila En Jtable Y Evento « 1 2 »
Java
ZedGe 12 15,362 Último mensaje 24 Noviembre 2011, 18:57 pm
por Leyer
problema calendario seleccion fechas
Desarrollo Web
painkillerpucela 3 3,079 Último mensaje 19 Julio 2012, 12:40 pm
por sexto
[SOLUCIONADO] Problema con multi-selección en listview
.NET (C#, VB.NET, ASP)
Eleкtro 3 2,772 Último mensaje 27 Diciembre 2012, 17:29 pm
por Eleкtro
Problema: MyPc Backup.exe - Imagen incorrecta
Software
Sophy_am 0 1,124 Último mensaje 13 Noviembre 2014, 14:36 pm
por Sophy_am
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines