[ Foro de C++ ]

Pilas a fichero

01-Jun-2022 22:51
Invitado (Tomas Y.)
0 Respuestas

les comentaré mi problema, estoy tratando de guardar en un fichero los datos de la pila, a lo cual, me crea el archivo de texto pero no me guarda absolutamente nada, es decir está vacío, no sé en donde podrá encontrarse el error de que no me escriba en el archivo de texto, alguien podría indicarme donde está el error? soy nuevo en este tema sobre archivos directos, el codigo funciona perfectamente, lo unico que no me ha salido es la parte de escribirlo en un un archivo de texto, agradecería muchisimo su ayuda, Muchas gracias!


 #include <iostream>
 #include <stdlib.h>
 #include <queue>
 #include <fstream>

 using namespace std;

 struct nodo {
     int num;
     struct nodo *sgte;
 };

 typedef nodo *punteroPila;

 void push (punteroPila &p, int val) {
     punteroPila aux;
     aux = new (struct nodo); 
     aux -> num = val;
     aux -> sgte = p;
     p = aux;
 }

 int pop (punteroPila &p){
     int num;
     punteroPila aux;
     aux = p;
     num = aux ->num;
     p = aux -> sgte;
     delete (aux);
     return num;
     }

 void MostrarPila(punteroPila p){
     punteroPila aux;
     aux = p;

     while (aux!= NULL){
         cout << " \t " << aux->num;
         aux = aux = aux -> sgte;
     }

 }

void menu() {
    cout << " \n ****** Menu General *******\n";
    cout << " \n 1. Ingresar datos a la pila";
    cout << " \n 2. Extraer datos de la pila";
    cout << " \n 3. Mostrar datos de la pila";
    cout << " \n 0. Salir \n";
    cout << " \n    Ingrese su opcion: ";               
}

int main() {
    
    string nombreArchivo = "Datos.txt";
    ofstream archivo;
    
    archivo.open(nombreArchivo.c_str(), fstream::out);
    
    punteroPila p = NULL; 
    int datos;
    int opc;
    int numx;
    
    do{
        menu();
        cin >> opc;
        
        switch(opc) {
            
            case 1: 
                for (int j=0; j < 4; j++){
                cout << "\n Ingrese el dato: ";
                cin >> datos;
                push (p,datos);
                cout << "\n Agregado con exito \n"; 
                }
            break;
            
            case 2: 
                numx = pop(p);
                cout << "\n Eliminado con exito n";
            break;
            
            case 3: {
                cout << "\n ***** Datos de la Pila *****\n";
                cout << " \n ";
                if (p!=NULL)
                MostrarPila(p);
                else
                cout << "\n En estos momentos no hay elementos \n";
                break;
            }       
            case 0: {
                cout<<"\n\n\n Programa Finalizado \n";
                exit(1);
                break;
            }
        }
        cout << "\n ";
        system("pause"); 
        
        archivo.close();
    }
    while (opc!=4);
    return 0;
}


 




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)