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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda cola circular
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda cola circular  (Leído 2,627 veces)
edo908458

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ayuda cola circular
« en: 31 Marzo 2016, 01:58 am »

ok tengo este problema:
tengo que hacer una cola circular y por ahora llevo esto:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6.  
  7. using namespace std;
  8.  
  9. class Clasecola
  10. {
  11.    private:
  12.        int cola[10];
  13.        int cima;
  14.        int inicio;
  15.        public:
  16.            Clasecola();
  17.            void agregar(int);
  18.            void sacar();
  19.            void imprimir();
  20.            void rotar(int);
  21.            bool vacia();
  22.            bool llena();
  23.            ~Clasecola();
  24.        };
  25.  
  26.        Clasecola::Clasecola()
  27.    {
  28.        inicio=0;
  29.        cima=-1;
  30.        for (int i=0;i<10;i++)
  31.        {
  32.            cola[i]=0;
  33.        }
  34.    }
  35.  
  36.    bool Clasecola::llena()
  37.    {
  38.        if(cima==9)
  39.        {
  40.            return 1;
  41.            }
  42.            else
  43.            {
  44.                return 0;
  45.                }
  46.        }
  47.  
  48. void Clasecola::agregar(int a)
  49. {
  50.    if (llena()==1)
  51.    {
  52.    cout<<"La cola esta llena"<<endl;
  53.    }
  54.    else
  55.    {
  56.        cima++;
  57.        cola[cima]=a;
  58.        }
  59.    }
  60.  
  61.    bool Clasecola::vacia()
  62. {
  63.    if (cima==-1)
  64.    {
  65.        return 1;
  66.        }
  67.        else
  68.        {
  69.            return 0;
  70.        }
  71.    }
  72.  
  73.    void Clasecola::sacar()
  74.   {
  75.    if (vacia()==1)
  76.    {
  77.        cout<<"La cola esta vacia"<<endl;
  78.           }
  79.        else
  80.        {
  81.            cout<<"Dato a Sacar "<<cola[inicio]<<endl;
  82.            inicio++
  83.            ;
  84.        }
  85. }
  86. void Clasecola::rotar(int a)
  87. {
  88.     if (llena()==1)
  89.    {
  90.    cout<<"Puesto ocupado"<<endl;
  91.    }
  92.    else
  93.    {
  94.        cima++;
  95.        cola[cima]=a;
  96.        }
  97.    }
  98. void Clasecola::imprimir()
  99.        {
  100.            if(vacia()==1)
  101.            {
  102.                cout<<"la cola esta vacia"<<endl;
  103.                }
  104.                else
  105.                {
  106.                    for(int i=inicio; i<10;i++)                
  107.                    {
  108.                        cout<<cola[i]<<endl;
  109.                        }
  110.                    }
  111.            }
  112.  
  113.  
  114.    Clasecola::~Clasecola()
  115.    {
  116.        for(int i=0;i<10;i++)
  117.        {
  118.            cola[i]=0;
  119.            }
  120.            cima=-1;
  121.        }
  122.  
  123.  
  124. int main(int argc, char *argv[])
  125. {
  126. Clasecola cola;
  127. int opc=1,Dat;
  128.    do
  129.    {
  130.        cout<<"Agregar Dato------1"<<endl;
  131.        cout<<"Sacar Dato--------2"<<endl;
  132.        cout<<"Imprimir cola-----3"<<endl;
  133.        cout<<"Rotar-------------4"<<endl;
  134.        cout<<"Salir-------------5"<<endl;
  135.            cin>>(opc);
  136.            system ("cls");
  137.            switch (opc)
  138.            {
  139.                case 1:
  140.                cout<<"Dame el dato"<<endl;
  141.                cin>>Dat;
  142.                cola.agregar(Dat);
  143.              break;
  144.                case 2:
  145.                cola.sacar();
  146.                  break;
  147.                case 3:
  148.            cola.imprimir();
  149.                  break;
  150.                case 4:
  151.                cout<<"Agrege un dato para realizar la rotacion"<<endl;
  152.                cin>>Dat;
  153.                cola.rotar(Dat);
  154.                  break;
  155.                case 5:
  156.                cout<<"Adios"<<endl;
  157.                  break;
  158.  
  159.                default:
  160.                cout<<"No es opcion valida"<<endl;
  161.                break;
  162.                }
  163.        }
  164.        while(opc<5);
  165.  
  166.    system("PAUSE");
  167.    return EXIT_SUCCESS;
  168. }


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!


« Última modificación: 31 Marzo 2016, 02:32 am por engel lex » En línea

LaiaxanIV

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: ayuda cola circular
« Respuesta #1 en: 31 Marzo 2016, 20:22 pm »

que tiene que hacer exactamente que hacer el rotar? No estoy familiarizado con las colas circulares. Por otra parte, el lleno tendría que ser igualando a 10, no a 9, ya que veo que es de 10 posiciones.
Además, cuando hayas borrado y añadido muchos elementos, cima e inicio se van a salir de rango. No crees que es mejor ir moviendo los elementos de posición?


« Última modificación: 31 Marzo 2016, 21:22 pm por LaiaxanIV » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda en nodo de lista circular
Java
apolo85 3 5,146 Último mensaje 28 Noviembre 2009, 03:57 am
por egyware
Cola circular estatica
Java
soser 5 23,465 Último mensaje 14 Marzo 2017, 13:56 pm
por Orubatosu
ayuda en cola
Programación C/C++
josue_tux 0 1,907 Último mensaje 26 Junio 2011, 06:47 am
por josue_tux
pasar datos de una cola dinámica a otra cola...
Programación C/C++
include (); 4 9,543 Último mensaje 10 Agosto 2012, 10:01 am
por BlackZeroX
Ayuda dependencia circular
Programación C/C++
MatiasLaplana 5 3,366 Último mensaje 18 Diciembre 2022, 21:44 pm
por MatiasLaplana
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines