Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema funzione della lista per la cancellazione
Forum - C/C++ - problema funzione della lista per la cancellazione

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 16:09
Mercoledì, 25/11/2009
Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <string.h>
  5. #include <stdio.h>
  6. #define max 50
  7. using namespace std;
  8. struct lista
  9. {
  10.                char info[max];
  11.                            char cognome[max];
  12.                            char classe[max];
  13.                            char nascita[max];
  14.                            char matricola[max];
  15.                lista * next;
  16. };
  17. typedef lista * p;
  18. int i=0;
  19. int menu();
  20. p cancella(p, char[max],int i);
  21. void stampa(p);
  22. p crea();
  23. p inserisci(p,p);
  24. void cerca(p);
  25. int main()
  26. {
  27.  int scelta;
  28.     char x[max];
  29.     p temp=NULL,l=NULL;
  30.     do
  31.     {
  32.         scelta=menu();
  33.         switch(scelta)
  34.         {
  35.  
  36.                 case 1:temp=crea();
  37.                 l=inserisci(l,temp);
  38.                 break;
  39.                 case 2: cout<<"la lista e' \n";
  40.                 stampa(l);
  41.                 cout<<"\n";
  42.                 break;
  43.                 case 3:cout<<"inserisci il nome da cancellare\n";
  44.                 cin>>x;
  45.                 l=cancella(l,x,i);
  46.                                 break;
  47.                                 case 4:
  48.                                 cerca(l);
  49.                 break;
  50.             }
  51.     }
  52.     while(scelta!=5);
  53.     system("pause");
  54. }
  55. int menu()
  56. {
  57.     int scelta;
  58.     cout<<"1.inserisci un nuovo nome\n";
  59.     cout<<"2.stampa la lista\n";
  60.     cout<<"3.cancella un nome\n";
  61.     cout<<"4.ricerca\n";
  62.         cout<<"5.cancella\n";
  63.     cin>>scelta;
  64.     return scelta;
  65. }
  66.  
  67. p cancella(p l,char x[],int i)
  68. {
  69.  
  70.                   system("cls");//non mi funziona la funzione sapete aiutarmi??
  71.           p temp=NULL;
  72.           if(l!=NULL)
  73.           {
  74.              
  75.               while(l->info[i]!=x[i])
  76.               {      
  77.                    
  78.                     l->next=cancella(l->next,x,i++);
  79.                    
  80.               }
  81.               temp=l;
  82.               l=l->next;
  83.               delete temp;
  84.                           i++;
  85.            return l;
  86.          }
  87. }
  88.  
  89. p crea()
  90. {
  91.           system("cls");
  92.               p temp;
  93.           temp=new lista;
  94.                   cout<<"dammi il nome\n";
  95.           fflush(stdin);
  96.                   gets(temp->info);
  97.                   cout<<"dammi il cognome di "<<temp->info<<endl;
  98.                   fflush(stdin);
  99.                   gets(temp->cognome);
  100.                   cout<<"dammi la classe di "<<temp->info<<endl;
  101.                   fflush(stdin);
  102.                   gets(temp->classe);
  103.                   cout<<"dammi la data di nascita "<<temp->info<<endl;
  104.                   fflush(stdin);
  105.                   gets(temp->nascita);
  106.                   cout<<"dammi la matricola di "<<temp->info<<endl;
  107.                   fflush(stdin);
  108.                   gets(temp->matricola);
  109.           temp->next=NULL;
  110.           return temp;
  111. }
  112.  
  113. p inserisci(p l,p nodo)
  114. {
  115.        system("cls");
  116.        if(l!=NULL)
  117.        {        
  118.                   if(l->info[0]>nodo->info[0])
  119.                   {                    
  120.                      nodo->next=l;
  121.                      return nodo;
  122.                   }
  123.                   else
  124.                   {
  125.                     l->next=inserisci(l->next,nodo);
  126.                       return l;
  127.                   }
  128.        }
  129.        return nodo;
  130. }



Se inserisco molte persona il programma impazzisce nella cancellazione e non capisco perchè!cosa ho sbagliato?

Ultima modifica effettuata da HeDo il 25/11/2009 alle 20:09
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:10
Mercoledì, 25/11/2009

cosa vuol dire impazzisce? cosa fa?

errori? output sbagliati? crash?

PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 21:25
Mercoledì, 25/11/2009
in pratica se inserisco tanti contatti e poi clicco 3 entra nella funzione cancella
-inserisco il nome da eliminare
-e non mi svolge la cancellazione o se la svolge mi elimina tutto e non sò perchè me lo sapete spiegare ??

grazie e scusate se nn sono stato molto chiaro

PM Quote