tengo que hacer una cola circular y por ahora llevo esto:
Código
#include <cstdlib> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <conio.h> using namespace std; class Clasecola { private: int cola[10]; int cima; int inicio; public: Clasecola(); void agregar(int); void sacar(); void imprimir(); void rotar(int); bool vacia(); bool llena(); ~Clasecola(); }; Clasecola::Clasecola() { inicio=0; cima=-1; for (int i=0;i<10;i++) { cola[i]=0; } } bool Clasecola::llena() { if(cima==9) { return 1; } else { return 0; } } void Clasecola::agregar(int a) { if (llena()==1) { cout<<"La cola esta llena"<<endl; } else { cima++; cola[cima]=a; } } bool Clasecola::vacia() { if (cima==-1) { return 1; } else { return 0; } } void Clasecola::sacar() { if (vacia()==1) { cout<<"La cola esta vacia"<<endl; } else { cout<<"Dato a Sacar "<<cola[inicio]<<endl; inicio++ ; } } void Clasecola::rotar(int a) { if (llena()==1) { cout<<"Puesto ocupado"<<endl; } else { cima++; cola[cima]=a; } } void Clasecola::imprimir() { if(vacia()==1) { cout<<"la cola esta vacia"<<endl; } else { for(int i=inicio; i<10;i++) { cout<<cola[i]<<endl; } } } Clasecola::~Clasecola() { for(int i=0;i<10;i++) { cola[i]=0; } cima=-1; } int main(int argc, char *argv[]) { Clasecola cola; int opc=1,Dat; do { cout<<"Agregar Dato------1"<<endl; cout<<"Sacar Dato--------2"<<endl; cout<<"Imprimir cola-----3"<<endl; cout<<"Rotar-------------4"<<endl; cout<<"Salir-------------5"<<endl; cin>>(opc); system ("cls"); switch (opc) { case 1: cout<<"Dame el dato"<<endl; cin>>Dat; cola.agregar(Dat); break; case 2: cola.sacar(); break; case 3: cola.imprimir(); break; case 4: cout<<"Agrege un dato para realizar la rotacion"<<endl; cin>>Dat; cola.rotar(Dat); break; case 5: cout<<"Adios"<<endl; break; default: cout<<"No es opcion valida"<<endl; break; } } while(opc<5); system("PAUSE"); return EXIT_SUCCESS; }
el programa tecnicamente corre, pero cuando le doy "sacar" el programa elmina el numero pero si excedo el limite (sacar once veces) , en vez de decirme, la cola esta vacia, comienza a lanzarme informacion basura.
y tengo este otro problema mas urgente.
nesesito ademas cuando seleccione la opcion "rotar" realice el trabajo normal de la cola circular, cualquier ayuda es bienvenida.
Mod: Los códigos deben ir en etiquetas GeSHi, ¡no escribas en mayúsculas!