ok tengo este problema:
tengo que hacer una cola circular y por ahora llevo esto:
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!
tengo que hacer una cola circular y por ahora llevo esto:
Código (cpp) [Seleccionar]
#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!