none
Mi programa es de colas que debe de validar que sea numero entero el q se encola, RRS feed

  • Pregunta

  • Estoy validando por sistema ascii, insertando el numero en cadena de caracteres, validandolo asi y si la validacion es solo numerica, la cadena la convierto en int... sin embargo me marca error C2061  en el getch y ademas cuando lo corro e inserto un numero con caracteres me manda un mensaje infinito de q el numero no es entero... ayudenme a encontrar mis errores por favor...

    aqui inserto mi codigo

    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>
    #include <string.h>
    #include <stdlib.h>
    int s (void);
    void vaciaCola( struct col &q);
    void muestraCola( struct col q );
    void encolar( struct col &q, int val );
    int desencolar( struct col &q );
    int validacion (void);
    struct nod
    {    int num;
        struct nod *sig;
    };
    struct col
    {    nod *del;
        nod *at;
    };
    using namespace std;
    int main()
    {    struct col q;
        q.del = NULL;
        q.at   = NULL;
        int op=1;   
        int x, dato;
        do
        {    cout<<"\n:::::::::::: COLAS :::::::::::\n\n";
            cout<<"\t 1. ENCOLAR "<<endl;
            cout<<"\t 2. DESENCOLAR "<<endl;
            cout<<"\t 3. MOSTRAR COLA "<<endl;
            cout<<"\t 4. VACIAR COLA "<<endl;
            cout<<"\t 5. SALIR "<<endl;
            cout<<"\n Teclee opcion: ";
            cin>> op;
            switch(op)
            {    case 1:                
                    dato=validacion ();
                    encolar( q, dato );
                    cout<<"\n\n\t\tNumero " << dato << " encolado...\n\n";
                    getchar();
                    break;
                case 2:
                    x = desencolar( q );
                    cout<<"\n\n\t\tNumero "<< x <<" desencolado...\n\n";
                    getchar();
                    break;
                case 3:    
                    cout << "\n\n MOSTRANDO COLA\n\n";
                    if(q.del!=NULL)
                        muestraCola(q);
                    else   
                        cout<<"\n\n\tCola vacia...!"<<endl;
                    getchar();
                    break;
                case 4:
                    vaciaCola(q);
                    cout<<"\n\n\t\tCola vaciada con exito...\n\n";
                    getchar();
                    break;
                default:
                    op=s();
                    break;
            }
        }
        getch ();
        return 0;
    }    
    void encolar( struct col &q, int val )
    {    struct nod *auxiliar = new(struct nod);
        auxiliar->num = val;
        auxiliar->sig = NULL;
        if( q.del == NULL)
            q.del = auxiliar;  
        else
            (q.at)->sig = auxiliar;
        q.at = auxiliar;
    }
    int desencolar( struct col &q )
    {    int n ;
        struct nod *auxiliar ;
        auxiliar = q.del;      
        n = auxiliar->num;
        q.del = (q.del)->sig;
        delete(auxiliar);          
        return n;
    }
    void muestraCola( struct col q )
    {    struct nod *auxiliar;
        auxiliar = q.del;
        while( auxiliar != NULL )
        {    cout<<"   "<< auxiliar->num ;
            auxiliar = auxiliar->sig;
        }
    }
    void vaciaCola( struct col &q)
    {    struct nod *auxiliar;
        while( q.del != NULL)
        {    auxiliar = q.del;
            q.del = auxiliar->sig;
            delete(auxiliar);
        }
        q.del = NULL;
        q.at   = NULL;
    }
    int s (void)
    {
        int y;
        cout<<"\n\t1. Salir del programa"<<endl;
        cout<<"\t2. Regresar a MENU PRINCIPAL"<<endl;
        cout<<"\nSelecciona opcion: ";
        cin>>y;
        if (y==1)
            return 5;
        if (y==2)
            return 0;
    }
    int validacion (void)
    {    unsigned char x;
        char cad[15];
        int cadi;
        int reg=0;
        while ( reg ==0)
        {    cout<<"\n Introduce numero a encolar: \n";
            gets (cad);
            for(x=0; x < 15; x++)
            {    if (cad[x] < 48 || cad[x] > 57)
                    reg=0;
                else
                    reg=1;
            }
            if (reg==1)
            {    cadi=atoi(cad);
                cout<<"\n\t"<<cadi << " ... Validado ... \n\n";
                reg=1;
                return cadi;
            } else
                cout<<cad <<"No es un numero...\n";
        }
    }

    jueves, 13 de junio de 2013 5:50