Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1

    [C++] Cancellazione elemento da una lista

    Per favore, avrei bisogno di capire come cancellare un elemento da una lista in C++, in pratica questo è il programma:
    Si deve creare una lista di pazienti formata da nome, cognome e età.
    Poi inseriti i dati, si possono fare 5 cose:
    1)aggiungere un nuovo paziente in coda alla lista
    2)cancellare un paziente dalla lista (che non sono riuscito a fare)
    3)stampare a video la lista
    4)svuotare la lista
    5)termina il programma

    Per favore aiutatemi, ci ho provato diverse volte, non so cosa ci sia di sbagliato!

    Questo è l'intero codice:

    codice:
    #include <iostream>
    using namespace std;
    
    
    struct lista
    {
        string paz;   //nome
        string paz2; //cognome
        int paz3;     //età
        lista *punt;
    };
    
    
    int main()
    {
        lista *nodo, *nodo_iniziale;
        string nome;
        string cogn;
        int eta;
        short int num;   //scelta dello switch case
        nodo_iniziale=NULL;
        cout<<"Inserire nome paziente: "<<endl;
            cin>>nome;
        cout<<"Inserire cognome paziente: "<<endl;
            cin>>cogn;
        cout<<"Inserire eta' del paziente: (tra 1 e 110)"<<endl;
            do
                cin>>eta;
            while(eta<1 || eta>110);
            
        while(nome!="stop")                         //creazione della lista e inserimento dei vari pazienti
        {
            nodo=new lista;
            nodo->paz=nome;
            nodo->paz2=cogn;
            nodo->paz3=eta;
            nodo->punt=nodo_iniziale;
            nodo_iniziale=nodo;
            cout<<"Inserire nome paziente; inserire stop per terminare"<<endl;
            cin>>nome;
            if(nome=="stop")
                goto fine;
            cout<<"Inserire cognome paziente: "<<endl;
            cin>>cogn;
            cout<<"Inserire eta' del paziente: (tra 1 e 110)"<<endl;
            do
                cin>>eta;
            while(eta<1 || eta>110);
        }
    
    
        fine:
    
    
        do{
        cout<<"Inserisci 1 per accodare un nuovo paziente in coda alla lista."<<endl;        //menù
        cout<<"Inserisci 2 per cancellare un paziente dalla lista."<<endl;
        cout<<"Inserisci 3 per visualizzare l'elenco dei pazienti."<<endl;
        cout<<"Inserisci 4 per svuotare la lista."<<endl;
        cout<<"Inserisci 5 per far terminare il programma."<<endl;
        do cin>>num;
        while(num<1 || num >5);
    
    
        cout<<endl;
    
    
            switch(num)
            {
                case 1:
                    lista *nodo_finale;                                            //accodamento nuovo paziente
                    cout<<"Inserisci nome nuovo paziente: "<<endl;
                        cin>>nome;
                        cout<<"Inserisci cognome paziente: "<<endl;
                        cin>>cogn;
                        cout<<"Inserisci eta' del paziente: "<<endl;
                        do
                        cin>>eta;
                        while(eta<1 || eta>110);
                        nodo->paz=nome;
                        nodo->paz2=cogn;
                        nodo->paz3=eta;
                        nodo->punt=nodo_iniziale;
                        nodo_iniziale=nodo;
                        nodo_finale=nodo;
                    break;
                case 2:
                    lista *pos;
                    bool trovato;                                                    //cancellazione di un paziente
                    cout<<"Inserisci nome paziente da cancellare: "<<endl;
                        cin>>nome;
                        cout<<"Inserisci cognome paziente: "<<endl;
                        cin>>cogn;
                        cout<<"Inserisci eta' del paziente: "<<endl;
                        do
                        cin>>eta;
                        while(eta<1 || eta>110);
                        pos=nodo_iniziale;
                        trovato=false;
                        while((pos!=NULL)&&(!trovato))
                        {
                            if(pos->paz==nome && pos->paz2==cogn && pos->paz3==eta)
                                {
                                    trovato=true;
                                    pos=NULL;
                                    delete pos;  
                                }
                            else
                            {
                                pos=pos->punt;
                            } 
                        }
    
    
                    break;
                case 3:                                                    //visualizzazione della lista
                    while(nodo!=NULL)
                    {
                        cout<<nodo->paz<<endl;
                        cout<<nodo->paz2<<endl;
                        cout<<nodo->paz3<<endl;
                        nodo=nodo->punt;
                    }
                    break;
                case 4:                                                //svuotamento della lista
                    nodo=NULL;
                    delete nodo;
                    break;
            }
           }while(num!=5);
    }
    Ultima modifica di LeleFT; 14-12-2016 a 09:51 Motivo: Aggiunti i tag CODE

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.