Сомнение относительно использования Батареек в C ++

Он изучал на батарейках и делал упражнение со мной случилось, что оборотная сторона прошения данных у пользователя númericos просит у него цепи текста. Упражнение просит, чтобы это было сделано в меню. Вещь состоит в том, что я сделал соответствующий код, но когда пользователь просит, чтобы они показали ему данные зарегистрированные (имена), себе показывают все кроме первого.

Эдж: Если digita Даниэль, Хосе, Куница, напечатав, показывает Куницу, Хосе, но не показывает Даниэля

Хотя это не будет практическим в реальной одинокой среде из-за curiososidad мне хотелось бы, что кто-то осветлил мое сомнение.

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

using namespace std;

struct Nodo
{
    string nombreCompleto;
    struct Nodo *sgte;
};

void agregar(Nodo *&, string);
void sacar(Nodo *&, string&);
void menu();

int main() {

    menu();

    system("pause");
    return 0;
}

void agregar(Nodo *&pila, string n)
{
    Nodo *nuevo = new Nodo();
    nuevo->nombreCompleto = n;
    nuevo->sgte = pila;
    pila = nuevo;
    cout << "Se agrega " << nuevo->nombreCompleto;
}

void sacar(Nodo *&pila, string& n)
{
    Nodo *aux = pila;
    n = aux->nombreCompleto; 
    pila = aux->sgte; 
    delete aux;

}



void menu()
{
    Nodo *pila = NULL;
    string flag = "0", data;
    int *opcion, n = 0;

    do{


        while (n <= 0 || n > 3)
        {
            cout << "Digite 1 para almacenar, 2 para mostrar los elementos de la pila y 3 para salir: "; cin >> n;
        }opcion = &n; 

        switch (*opcion)
        {
        case 1:cout << "\nInserte un nombre  "; cin >> data; agregar(pila, data); cout << "\n\n";
            break;
        case 2:cout<<"Los elementos de la pila son: \n\n"; 

            while (pila != NULL)
            {

                sacar(pila, data);
                if (pila != NULL) {
                    cout << data << " , ";
                }
                else
                {
                    cout << "\n*FIN datos*\n\n";
                }
            }flag = "3";
            break;
        case 3:system("cls"); cout << "El proceso ha terminado.\n\n"; flag = "3";
            break;
        } n = 0; 

    } while (flag!="3");

}
5
задан 25.06.2019, 08:29
0 ответов