Он изучал на батарейках и делал упражнение со мной случилось, что оборотная сторона прошения данных у пользователя 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");
}