Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problemas con pila y funciones

Estas en el tema de problemas con pila y funciones en el foro de C/C++ en Foros del Web. hola tenia un problema de invertir el orden de una fila secuencial y la idea era guardarla en una pila y luego pasarla a otra ...
  #1 (permalink)  
Antiguo 02/11/2009, 00:23
 
Fecha de Ingreso: enero-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 1
problemas con pila y funciones

hola tenia un problema de invertir el orden de una fila secuencial y la idea era guardarla en una pila y luego pasarla a otra fila , hize mi programa pero lo quise hacer con mas funciones para hacerlo mas ordenados, el problema es que al poner de argumento la pila al empilar ...no empila.

Código:
#include <iostream>
#include <conio.h>
using namespace std;

struct nodo{
       int valor;
       nodo *sig;
};

class pila{
      private:
              nodo *cima;
      public:
              void empilar(int);
              int desempilar();
              void mostrar();
              pila();
              ~pila();      
};

pila::pila(){
     cima = NULL;            
}

pila::~pila(){
   nodo * n = new nodo;
   n = cima;
   while(n!=NULL){
        cima = n;
        n=n->sig;
        delete(cima);             
   }
   delete(n);                             
}

void pila::empilar(int v){
     nodo * nuevo = new nodo;
     nuevo->valor = v;
     nuevo->sig = NULL;
     if(cima != NULL){
        nuevo->sig = cima;      
     }
     cima = nuevo;     
}
int pila::desempilar(){
     int valor;
     if(cima==NULL) cout<<"Pila vacia";
     else{
          valor = cima->valor;
          cima = cima->sig;
     }
     return valor;
}

void pila::mostrar(){
   nodo * n = new nodo;
   n = cima;
   if(n==NULL){cout<<"\nVACIO"<<endl;}
   while(n!=NULL){
       cout<<"Valor:"<<n->valor<<endl;
       n=n->sig;              
   }
   
}

int menu(){
   int op; 
   cout<<"[1]Crear fila"<<endl;
   cout<<"[2]Invertir fila"<<endl;
   cout<<"elegir:";
   cin>>op;
   return op; 
}
void fila(){
   FILE *F;
   int n,dato;
   F=fopen("datos.txt","a+");  
   cout<<"cuantos datos desea ingresar:";
   cin>>n;
   for(int i=0;i<n;i++){
       cout<<"escribe el dato:";cin>>dato;    
       fwrite(&dato,sizeof(dato),1,F);      
   } 
   fclose(F);
}

int empilarfila(pila p){
     FILE *F;
     int dato,i=0;
      F=fopen("datos.txt","r");
      fread(&dato,sizeof(dato),1,F);
      while(!feof(F)){
            cout<<"empilando:"<<dato<<endl;
            p.empilar(dato);
            fread(&dato,sizeof(dato),1,F);          
            i++;
      }
      return i;
}
void desempilarfila(int n,pila p){
     FILE *G;
     int dato;
     G=fopen("back.txt","a+");
     for(int i=0;i<n;i++){
        dato=p.desempilar();
        fwrite(&dato,sizeof(dato),1,G);     
     }
     fclose(G);
     
}
int main(){
   pila p1; 
   int opcion,n;
   do{
      opcion=menu(); 
      if(opcion==1){
           fila();         
      }   
      else{
           if(opcion==2){
               n=empilarfila(p1);
               p1.mostrar();
               //desempilarfila(n,p1);           
           }
      }
       
   }while(opcion); 
    
    
return 0;
}
espero que me puedan ayudar cual seria el problema ..gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:36.