Oppure

Loading
25/11/09 15:09
matteog

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <stdio.h>
#define max 50
using namespace std;
struct lista
{
               char info[max];
			   char cognome[max];
			   char classe[max];
			   char nascita[max];
			   char matricola[max];
               lista * next;
};
typedef lista * p;
int i=0;
int menu();
p cancella(p, char[max],int i);
void stampa(p);
p crea();
p inserisci(p,p);
void cerca(p);
int main()
{
 int scelta;
    char x[max];
    p temp=NULL,l=NULL;
    do
    {
        scelta=menu();
        switch(scelta)
        {

                case 1:temp=crea();
                l=inserisci(l,temp);
                break;
                case 2: cout<<"la lista e' \n";
                stampa(l);
                cout<<"\n";
                break;
                case 3:cout<<"inserisci il nome da cancellare\n";
                cin>>x;
                l=cancella(l,x,i);
				break;
				case 4:
				cerca(l);
                break;
            }
    }
    while(scelta!=5);
    system("pause");
}
int menu()
{
    int scelta;
    cout<<"1.inserisci un nuovo nome\n";
    cout<<"2.stampa la lista\n";
    cout<<"3.cancella un nome\n";
    cout<<"4.ricerca\n";
	cout<<"5.cancella\n";
    cin>>scelta;
    return scelta;
}

p cancella(p l,char x[],int i)
{

		  system("cls");//non mi funziona la funzione sapete aiutarmi??
          p temp=NULL;
          if(l!=NULL)
          { 
              
              while(l->info[i]!=x[i])
              {      
                    
                    l->next=cancella(l->next,x,i++);
                    
              }
              temp=l;
              l=l->next;
              delete temp;
			  i++;
           return l;
         }
}

p crea()
{
          system("cls");
	      p temp;
          temp=new lista;
		  cout<<"dammi il nome\n";
          fflush(stdin);
		  gets(temp->info);
		  cout<<"dammi il cognome di "<<temp->info<<endl;
		  fflush(stdin);
		  gets(temp->cognome);
		  cout<<"dammi la classe di "<<temp->info<<endl;
		  fflush(stdin);
		  gets(temp->classe);
		  cout<<"dammi la data di nascita "<<temp->info<<endl;
		  fflush(stdin);
		  gets(temp->nascita);
		  cout<<"dammi la matricola di "<<temp->info<<endl;
		  fflush(stdin);
		  gets(temp->matricola);
          temp->next=NULL;
          return temp;
}

p inserisci(p l,p nodo)
{
       system("cls");
       if(l!=NULL)
       {         
                  if(l->info[0]>nodo->info[0])
                  {                     
                     nodo->next=l;
                     return nodo;
                  }
                  else
                  {
                    l->next=inserisci(l->next,nodo);
                      return l;
                  }
       }
       return nodo;
}




Se inserisco molte persona il programma impazzisce nella cancellazione e non capisco perchè!cosa ho sbagliato?
Ultima modifica effettuata da HeDo 25/11/09 19:09
aaa
25/11/09 19:10
HeDo

cosa vuol dire impazzisce? cosa fa?

errori? output sbagliati? crash?
aaa
25/11/09 20:25
matteog
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
aaa