1

Estoy creando una lista en la cual guarde información sobre el paciente, entonces esta es una parte de el código en el que ya creado el nodo, se procede a guardar la información que inserte el usuario es aquí donde sucede el error el cual no guarda la información administrada si no que simplemente cierra el programa. Así que no se cual sea el error o porque se da, si estoy declarando el nodo mal o me falta una librería realmente no tengo idea de porque pueda ser...

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#define LetrasMax 51

using namespace std;

struct Nodo{
        char Nombre [LetrasMax];
       char Apellido [LetrasMax];
       char Direccion [LetrasMax];
       char Telefono [LetrasMax];
       int Codigo;      
       Nodo *Nx;     
};

  main(){
     Nodo *Nuevo = new Nodo();  
     Nuevo=NULL;   
     cout<<"\n\tRegistrar Paciente";  
     //Tambien intente poner un cin.ignore() antes de preguntar el codigo pero aun asi sigue marcando el mismo error, igualmente intente utilizar scanf y sucede lo mismo.
        cout<<"\nIngrese el Codigo del paciente: "; cin>>Nuevo->Codigo; //El error aparece aquí en donde simplemente no guarda el código y cierra la aplicación.

        //sucede lo mismo en estos codigos
        cin.ignore();cout<<"\n Ingrese el Nombre del paciente: "; 
        cin.getline (Nuevo->Nombre, LetrasMax);

        cin.ignore();cout<<"\n Ingrese el Apellido del paciente: "; 
        cin.getline (Nuevo->Apellido, LetrasMax);

        cin.ignore();cout<<"\n Ingrese la Direccion del paciente: "; 
        cin.getline (Nuevo->Direccion, LetrasMax);

        cin.ignore();cout<<"\n Ingrese el Telefono del paciente: "; 
        cin.getline (Nuevo->Telefono, LetrasMax);
       }
Víctor Álvarez
  • 2,593
  • 4
  • 18
  • 41
  • 2
    Aparentemente el error esta aqui `Nodo *Nuevo = new Nodo(); Nuevo=NULL;`, no lo explicare espero que lo entiendas – Shassain Oct 17 '19 at 19:01

1 Answers1

5

Vas a un restaurante y pides el plato más caro del menú regado por el vino más caro de la carta, justo después de que te tomen nota abandonas el local. Unos minutos después traen a tu mesa la comida y ven que no hay ningún cliente en ella. ¿Quién paga la comida y el servicio?


Vas a un restaurante.

main(){

Pides el plato más caro del menú, regado por el vino más caro de la carta.

     Nodo *Nuevo = new Nodo();  

Abandonas el local.

     Nuevo=NULL;   

Traen la comida a tu mesa y la encuentran vacía (Nuevo es NULL) ¿Quién paga ahora?

     cout<<"\n\tRegistrar Paciente";  
        cout<<"\nIngrese el Codigo del paciente: "; cin>>Nuevo->Codigo;

No seas incívico, si vas a un restaurante y haces un pedido no te vayas sin pagar; lo que debes hacer es esto):

#include <iostream>
#include <string>

struct Nodo
{
    std::string Nombre;
    std::string Apellido;
    std::string Direccion;
    std::string Telefono;
    std::string Codigo;      
    Nodo *Nx{nullptr};
};

std::ostream &operator <<(std::ostream &o, const Nodo &n)
{
    return o << n.Codigo << ' '
             << n.Nombre << ' '
             << n.Apellido << ' '
             << n.Direccion << ' '
             << n.Telefono;
}

int main()
{
    Nodo *Nuevo = new Nodo();  

    std::cout << "\n\tRegistrar Paciente";  
    std::cout << "\nIngrese el Codigo del paciente: ";
    std::cin >> Nuevo->Codigo;

    std::cin.ignore();
    std::cout << "\n Ingrese el Nombre del paciente: ";
    std::getline(std::cin, Nuevo->Nombre);

    std::cin.ignore();
    std::cout << "\n Ingrese el Apellido del paciente: "; 
    std::getline(std::cin, Nuevo->Apellido);

    std::cin.ignore();
    std::cout << "\n Ingrese la Direccion del paciente: "; 
    std::getline(std::cin, Nuevo->Direccion);

    std::cin.ignore();
    std::cout << "\n Ingrese el Telefono del paciente: "; 
    std::getline(std::cin, Nuevo->Telefono);

    std::cout << *Nuevo << '\n';

    delete Nuevo;

    return 0;
}
  1. No incluyas <conio.h> ni <stdlib.h>, además de que son cabeceras de en lugar de no las usas y si usases algo de ellas deberías usar otra versión. Lee este hilo para saber más.
  2. Estás programando en C++, usa sus herramientas (como std::string), te harán la vida más fácil.
  3. La función main debe tener tipo de retorno int, y aunque no devolver valor es válido yo aconsejo hacerlo siempre. Lee este hilo para saber más.
  4. No apelotones tu código, no queda más bonito apelotonado: al contrario, hace que sea más difícil de leer.
  5. Si vas a usar using namespace std, úsalo en el ámbito más pequeño posible y evita usarlo en ámbito global. Lee este hilo para saber más.
  6. Debes borrar (delete) la memoria que pides con new.
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82