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 - dany haster

#1
Programación C/C++ / piladinamica caracteres
19 Noviembre 2013, 04:54 AM
hola necesito que alguien me diga en donde estoy mal en este programa lo corre pero no em lee las cadenas de ante mano gracias =)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <string>
#include<conio.h>
#define n 20
using namespace std;

typedef struct nodo
{
    string dat[n];
    struct nodo *p;
}nod;
nod *tope=NULL;

void push(string ndat)
{
     nod *nvo;
     nvo=new nod;
     nvo->dat[n]=ndat;
     if(tope==NULL)
     nvo->p=NULL;
     else
     {
         nvo->p=tope;
     }
     tope=nvo;
}
void pop()
{
     nod *aux=tope;
     if(tope==NULL)
     {
                   cout<<"\n La pila esta vacia\n";
                   system("pause");
                   return;
     }
     tope=aux->p;
     cout<<"\n Sale: "<<aux->dat<<endl;
     system("pause");
     delete(aux);
}

void imprimepila()
{
     nod *aux=tope;
     if(tope==NULL)
     {
                   cout<<"\n La pila esta vacia\n";
                   system("pause");
                   return;
     }
     while(aux!=NULL)
     {
                 cout<<aux->dat<<endl;
                 aux=aux->p;
     }
     cout<<endl;
     system("pause");
}

void busca(string bus)
{
     nod *aux=tope;
     int contador=0;
     if(tope==NULL)
     {
                   cout<<"\n La pila esta vacia\n";
                   system("pause");
                   return;
     }
     while(aux!= NULL)
     {
                 
                 if(aux->dat[n]==bus)
                 {
                      cout<<"\nDato encontrado en la posicion: "<<contador<<endl;
                      system("pause");
                      return;
                 }
                 aux=aux->p;  contador++;
     }
     cout<<"\nEl "<<bus<<" no esta en la pila.\n";
}

void ultima()
{
     nod *aux=tope;
     if(tope==NULL)
     {
                   cout<<"\n La pila esta vacia\n";
                   system("pause");
                   return;
     }
      while(aux->p!= NULL)
      {
                  aux=aux->p;
      }
      cout<<"\nEl dato que esta en el fondo de la pila es: "<<aux->dat<<endl;;
      system("pause");
}

void primero()
{
     if(tope==NULL)
     {
                   cout<<"\n La pila esta vacia\n";
                   system("pause");
                   return;
     }
     cout<<tope->dat<<endl;
}

void numelemento(string bus)
{
     nod *aux=tope;
     int contador=0;
     if(tope==NULL)
     {
                   cout<<"\n La pila esta vacia\n";
                   system("pause");
                   return;
     }
     while(aux!= NULL)
     {
          contador++;
          aux=aux->p;
     }
     cout<<"\nLa pila tiene: "<<contador<<" elementos";
}

void elimina()
{
     nod *aux=tope;
     int contador=0;
     if(tope==NULL)
     {
                   cout<<"\n La pila esta vacia\n";
                   system("pause");
                   return;
     }
     while(aux!= NULL)
     {
          aux=aux->p;
          pop();
     }
     cout<<"\n La pila esta vacia\n";
}

main()
{
      int opc;
      string dato[n], buscado[n];
      string dat[n];
      cout<<"\nEscoja una opcion: \n";
      do{
          cout<<"\n 1.Insertar en la pila";
          cout<<"\n 2.Sacar de la pila";
          cout<<"\n 3.Imprimir pila";
          cout<<"\n 4.Buscar en la pila";
          cout<<"\n 5.Elemento ubicado en el fondo de la pila";
          cout<<"\n 6.Elemento ubicado al principio de la pila";
          cout<<"\n 7.Numero del elemento en la pila";
          cout<<"\n 8.Eliminar toda la pila";
          cout<<"\n 9.salir\n\n";
          cin>>opc;
         
          switch(opc)
          {
                 case 1:
                      cout<<"\nDato a insertar: ";
                      fflush(stdin);
                      getline(cin,dato[n]);
                      push(dato[n]);
                      system("pause");
                      break;
                 case 2:
                      pop();
                      break;
                 case 3:
                      imprimepila();
                      break;
                 case 4:
                      cout<<"\nDar dato a insertar: ";
                      fflush(stdin);
                      getline(cin,buscado[n]);
                      busca(buscado[n]);
                      break;
                 case 5:
                      ultima();
                      break;
                 case 6:
                      primero();
                      break;
                 case 7:
                      cout<<"\nQue elemento deseas buscar: ";
                      fflush(stdin);
                      getline(cin,dat[n]);
                      numelemento(dat[n]);
                      break;
                 case 8:
                      elimina();
                      break;
                 case 9:
                      cout<<"\nFin del programa. ";
                      system("pause");
                      break;
                 default:
                         cout<<"\nOpcion incorrecta vuelve a intentarlo ";
          }
      }while(opc!=9);
}