Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - JZtban

#1
Programación C/C++ / Listas en c++
15 Mayo 2013, 06:19 AM
//Bueno lo que pasa es que tengo un codigo de listas en c++ y no se como podria añadir 2 procesos mas que son eliminar un nodo de la lista y buscar si existe un elemento en la lista
//por ahora el codigo solo crea nodos, los llena, muestra sus valores y realiza el promedio de todos los valores de la lista


#include<iostream> //librerias
#include<stdlib.h>

using namespace std;

struct nodo{ //definir la estructura del nodo
       int dato;
       struct nodo *siguiente;
};

main()
{
      struct nodo *cabeza;
      struct nodo *nuevo;
      struct nodo *aux;
      cabeza=NULL;
      int valor; //el valor que se va a almacenar
      int recorrer=0; //
      int total_Nodos; //cantidad de nodos que deseamos crear
      int cont=0;
      float acum=0, prom;
     
      cout<<"\n\n\n\t\t'''Programa Para ingresar Lista'''";
      cout<<"\n\n\n\t\tDigite la cantidad de Nodos de la Lista: ";
      cin>>total_Nodos; //captura la cantidad de nodo aque desea ingresar en la lista
     
      for(int x=1; x<=total_Nodos; x++)
      {
              nuevo=(struct nodo*)malloc(sizeof(struct nodo)); //instruccion que indica a la memoria la reserva de espacio en memoria para la creacion de nodos
              if(nuevo!=NULL) //pregunta si el nodo si se creo en memoria
              {
                       nuevo->siguiente=cabeza; //
                       cout<<"\n\tDigite el dato #"<<x<<": ";
                       cin>>valor; //lee el valor que ingresaron
                       nuevo->dato=valor; //se asigna el valor al nodo en su campo dato
                       cabeza=nuevo; //la cabeza apunta al nuevo nodo
                       acum=acum+valor;
                       cont=cont+1;
              }
              prom=acum/cont;
      }
     
                                               
      cout<<"\nDesea ver los datos de la Lista SI(1)/NO(0)";
      cin>>total_Nodos; //reutilizacion de la variables para visualizar los nodos
     
      if(total_Nodos ==1) //opcion1
      {
                     system("cls");
                     while(nuevo!=NULL) //
                     {
                                       recorrer++; //funciona como contador para re
                                       cout<<"\n\tEl dato del nodo" <<recorrer<<"->"<<nuevo->dato;
                                       nuevo=nuevo->siguiente; //pasa al nodo siguiente
                     }
                     cout<<"\n\n\tEl Promedio de los valores de la lista es "<<prom<<"\n";
      }
      else
      {
          system("cls");
          cout<<"\n\n\n\t\t'Gracias por usar el programa'";
     
      }
      system("pause");
}


Espero puedan ayudarme, Muchas Gracias Saludos!
#2
Bueno, Amigo muchas Gracias por todo,, me sirvió de mucho tu ayuda.
Y disculpas por ser tan enredado y causar problemas jeje  :D

Gracias, Saludos.
#3
ok, primero agradezco por estar pendiente ayudándome.
Bueno ahora el código esta actualizado y solo resta corregir en la función mostrar, ya que la pila tiene la característica de el primero en entrar es el ultimo en salir. pero no se como declarar la sentencia para que realice la operación mostrar teniendo en cuenta la característica de la pila.

Espero me puedan ayudar.
Muchas Gracias.


#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define tamax 10

using namespace::std;

struct pila
{
       int info[10];
       int tope;
       int valor;
};

void crear_pila(pila &p);
void pila_vacia(pila &p);
void apilar(pila &p, int valor);
void desapilar(pila &p);
void mostar_pila(pila &p);
int sw =0;

void menu()
{
    system("cls");
    cout<<"\n\t1_Crear Pila           ";
    cout<<"\n\t2_Apilar               ";
    cout<<"\n\t3_Desapilar            ";
    cout<<"\n\t4_Mostrar Pila         ";
    cout<<"\n\t5_Salir              \n";
    cout<<"\n\tElija Opcion a realizar:  ";
}

int main()
{   
      int opc, valor;
       struct pila p;

       do
       {
         menu(); 
         cin>> opc;
          switch(opc)
          {                   
             case 1:crear_pila(p);break;
             
             case 2:
                  system("cls");
                  if(sw == 0)
                  {
                  system("cls");           
                  cout<<"\n\n\n\n\t\t\tDebe Crear Pila\n";
                  system("PAUSE");break;
                  }
                  cout<<"\n\n\n\n\t\tIngrese un numero Entero: ";
                  cin>>valor;
                  apilar(p,valor);break;
                 
             case 3: 
                  if(sw == 0)
                  {
                       system("cls");           
                       cout<<"\n\n\n\n\t\tLa Pila Esta Vacia no puede desapilar\n";
                       system("PAUSE");
                  }
                  else
                  {
                  desapilar(p);break;
                  }
                 
             case 4:
                    if(sw == 0)
                    {
                      system("cls");           
                      cout<<"\n\n\n\n\t\tLa Pila esta vacia no se puede mostrar\n";
                      system("PAUSE");
                    }
                    else
                    {
                      mostar_pila(p);break;
                    }
          }     
      }while(opc!=5);
      return 0;
}

void crear_pila(pila &p)
{
      system("cls");
      for(int x=0;x<=tamax;x++)
      {
       p.info
  • =0;
           p.tope=0;
          }
         
          sw= 1;
          cout<<"\n\n\n\n\t\tLa Pila Se ha sido Creada\n";
          system("pause");       
    }

    void pila_vacia(pila &p)
    {
              p.tope=0;         
    }

    void apilar(pila &p, int valor)
    {
                if(p.tope == tamax)
                {
                  system("cls");
                  cout<<"\n\n\n\n\t\tLa Pila Esta Llena\n";
                  system("PAUSE");
                }
                else
                {
                    system("cls");
                    p.info[p.tope] = valor;               
                    p.tope++;
                    cout<<"\n\n\n\n\t\tEl Elemento: "<<valor<<" ha sido Guardado\n" ;
                    system("PAUSE");                 
                }     
    }

    void desapilar(pila &p)
    {
         int dato;
         if(p.tope>0)
         {
              sw= 1;
              system("cls");
              p.tope--;
              dato = p.info[p.tope];
              p.info[p.tope]=0;
              cout<<"\n\n\n\n\tSe ha eleminado el valor "<<dato<<"\n";
              system("PAUSE");     
         }
    }

    void mostar_pila(pila &p)
    {
          system("cls");
          if(p.tope > 0)
          {     
                sw= 1;                 
          }
          if(sw==1)
          {
             for(int j =0;j<tamax;j++)
             {
                     cout<<"\n\t"<<p.info[j]<<"\n\t";
             
             }
              cout<<"\n\n\n\tElementos de la Pila\n";
              system("PAUSE");
             
          }     
    }
#4
ok, disculpen por no especificarme de la mejor manera. ya realice las corección que me sugirieron, no desapila
#5
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define tamax 10

using namespace::std;

struct pila
{
       int info[10];
       int tope;
       int valor;
};

void crear_pila(pila &p);
void pila_vacia(pila &p);
void apilar(pila &p, int valor);
void desapilar(pila &p);
void mostar_pila(pila &p);
int sw =0;

void menu()
{
    system("cls");
    cout<<"\n\t1_Crear Pila           ";
    cout<<"\n\t2_Apilar               ";
    cout<<"\n\t3_Desapilar            ";
    cout<<"\n\t4_Mostrar Pila         ";
    cout<<"\n\t5_Salir               \n";
    cout<<"\n\tElija Opcion a realizar:  ";
}

int main()
{   
      int opc, valor;
       struct pila p;

       do
       {
         menu(); 
         cin>> opc;
          switch(opc)
          {                   
             case 1:crear_pila(p);break;
             
             case 2:
                  system("cls");
                  if(sw == 0)
                  {
                  system("cls");           
                  cout<<"\n\n\n\n\t\t\tDebe Crear Pila\n";
                  system("PAUSE");break;
                  }
                  cout<<"\n\n\n\n\t\tIngrese un numero Entero: ";
                  cin>>valor;
                  apilar(p,valor);break;
                 
             case 3: 
                  if(sw == 0)
                  {
                       system("cls");           
                       cout<<"\n\n\n\n\t\tLa Pila Esta Vacia no puede desapilar\n";
                       system("PAUSE");
                  }
                  desapilar(p);break;
                 
             case 4:
                    if(sw == 0)
                  {
                  system("cls");           
                  cout<<"\n\n\n\n\t\tLa Pila esta vacia no se puede mostrar\n";
                  system("PAUSE");
                  }
                  mostar_pila(p);break;
          }     
      }while(opc!=5);
      return 0;
}

void crear_pila(pila &p)
{
      system("cls");
      for(int x=0;x<10;x++)
      {
       p.info
  • =0;
          }
         
          sw= 1;
          cout<<"\n\n\n\n\t\tLa Pila Se ha sido Creada\n";
          system("pause");       
    }

    void pila_vacia(pila &p)
    {
          p.tope=0;
    }

    void apilar(pila &p, int valor)
    {
                if(p.tope == tamax)
                {
                  system("cls");
                  cout<<"\n\n\n\n\t\tLa Pila Esta Llena\n";
                  system("PAUSE");
                }
                else
                {
                    system("cls");
                    p.tope++;
                    p.info[p.tope] = valor;               
                    cout<<"\n\n\n\n\t\tEl Elemento: "<<valor<<" ha sido Guardado\n" ;
                    system("PAUSE");                 
                }     
    }

    void desapilar(pila &p)
    {
         int dato;
         if(sw=0)
         {
              sw= 1;
              system("cls");
              p.tope--;
              cout<<"\n\n\n\n\tSe ha eleminado el dato "<<dato<<"\n";
              system("PAUSE");     
         }
    }

    void mostar_pila(pila &p)
    {
          system("cls");
          if(p.tope > 0)
          {     
                sw= 1;                 
          }
          else
          {
             for(int j =0;j<tamax;j++)
             {
                     cout<<"\n\t"<<p.info[j]<<"\n\t";
             
             }
              cout<<"\n\n\n\tElementos de la Pila\n";
              system("PAUSE");
             
          }     
    }