Problema parentesi

di il
22 risposte

Problema parentesi

Ciao, il mio professore mi ha dato questa traccia: Gestire, tramite menù, alcune operazioni su una Lista di informazioni relative a Codice_foto e dimensione in bytes distinguendo tra politica LIFO e politica FIFO.

Il menù deve prevedere le seguenti operazioni:
MENU’ GENERALE
1. GESTIONE DI UNA LISTA PILA
a. Inserimento nuovo nodo
b. Estrazione
c. Visualizzazione
d. Ricerca in base al codice foto
2. GESTIONE DI UNA LISTA CODA
a. Inserimento nuovo nodo
b. Estrazione
c. Visualizzazione
d. Ricerca in base al codice foto
3. Fine programma e deallocazione della Lista

io ho conseguentemente fatto questo codice:

#include <iostream>
using namespace std;

struct s_nodo
{
	char codice_foto [30];
	struct s_nodo *next;
};
typedef struct s_nodo nodo;
typedef nodo* p_nodo;

void CreaNodo();
void inserimento_coda(p_nodo, p_nodo);
void inserimento_pila(p_nodo, p_nodo);
int inputc(int, int);
char inputc2();
void menu();
void menu2();
bool ListaVuota(p_nodo);
void EstrazioneT(p_nodo);
void Visualizzazione(p_nodo);
void Ricerca(p_nodo);
void elimina_lista(p_nodo);


int main()
{
	p_nodo pTesta=NULL, p1, p2, nuovo;
	int scelta;
	char scelta2;
	menu();
	cout<<"Fai la tua scelta: "<<endl;
	scelta = inputc(1,3);
    switch(scelta){
        
        case 1: 
        menu2();
        cin>>scelta2;
        scelta2=inputc2();
        switch(scelta2){
            
            case 'a':
            CreaNodo();
            inserimento_pila(pTesta,nuovo);
            break;
            case 'b':
            EstrazioneT(pTesta);
            break;
            case 'c':
            Visualizzazione(pTesta);
            break;
            case 'd':
			Ricerca(pTesta);
			break;				
        }
        break;
        
        case 2:
        menu2();
        cin>>scelta2;
        scelta2=inputc2();
        switch(scelta2){
            
            case 'a':
            CreaNodo();
         	inserimento_coda(pTesta,nuovo);
            break;
            case 'b':
            EstrazioneT(pTesta);
            break;
            case 'c':
            Visualizzazione(pTesta);
            break;
            case 'd':
			Ricerca(pTesta);
        
        	break;
        	case 3:
        	elimina_lista(pTesta);
        	break;
        return 0;
    }

void CreaNodo()
{
    char cod[30];
    double num;
    cout<<"\nDigita il codice della foto da inserire nel nodo...:  ";
    cin>>cod;
    cout<<"\nscrivere la dimensione in bytes...:  ";
    cin>>num;
    p1 = new nodo;       
    p1->codice_foto=cod;      
                             
    p1->next=NULL;                         
    return 0;
 } 

void inserimento_coda(p_nodo p, p_nodo nuovo)
{
	for (nuovo = p; nuovo->next != NULL; nuovo = nuovo->next)
	{
		nuovo->next = new nodo;
		cout<<"Inserisci in coda il valore nella lista: "<<endl;
		cin>>(nuovo->next)->codice_foto;
		(nuovo->next)->next;
	}
	return 0
}

void inserimento_pila(p_nodo p, p_nodo nuovo)
{
	nuovo = new nodo;
	cout<<"Inserisci in pila il valore nella lista: "<<endl;
	cin>>nuovo->codice_foto;
	nuovo->next = p;
	p = nuovo;
}

int inputc(int vmin, int vmax)
{
	int valore=0;	
	do
	{
	    cin>>valore;
	    if (valore<vmin || valore>vmax)
	    {
	    	cout<<"Valore inserito non accettabile.\n";
	    	cout<<"Inserire un valore compreso tra "<<vmin<<" e "<<vmax<<": ";
		}
	}while(valore<vmin || valore>vmax);
	
return valore;
}

char inputc2()
{
    char risp;
        do{
               cin>>risp;
               if (risp!="a"||risp!= "b"||risp!="c"||risp!="d"){
               	cout<<"lettera inserita non accettabile.\n";     
               	menu2();
               }
               
        }while(risp!="a"||risp!= "b"||risp!="c"||risp!="d");
return risp;
}


void menu()
{
	cout<<"//////////////////////////////////////////"<<endl;
	cout<<"Premi 1 se vuoi una lista gestita in coda"<<endl;
	cout<<"Premi 2 se vuoi una lista gestita in pila"<<endl;
	cout<<"Premi 3 se vuoi deallocare una lista"<<endl;
	cout<<"//////////////////////////////////////////"<<endl;
}

void menu2()
{
	cout<<"//////////////////////////////////////////"<<endl;
	cout<<"digita a se vuoi creare un nodo"<<endl;
	cout<<"digita b se vuoi estrarre"<<endl;
	cout<<"digita c se vuoi visualizzare"<<endl;
	cout<<"digita d se vuoi cercare in base al codice foto"<<endl;
	cout<<"//////////////////////////////////////////"<<endl;

}

bool ListaVuota(p_nodo p)
{
  bool vuota = true;
  if ( p == NULL)    
    {
      cout <<" ATTENZIONE !! Lista vuota. "<<endl;   
      vuota = false;
    }
 
  return vuota;
}

void EstrazioneT(p_nodo p)
{
	int *p1;
    cout<<"\n===============================";
    cout<<"\n==== Estrazione di un nodo ====";
    cout<<"\n===============================\n";
  
  if (ListaVuota(p) == true)
    {
       p1 = p;   
       cout << " Nodo estratto --->  " << p1->inf<<endl;
       if (p1->next == NULL)
           {
		   p = NULL;
		   }
    }
  return 0;
}

void Visualizzazione(p_nodo p)
{
	int *p1;
	int x;
 if (ListaVuota(p) == true)
   {
     p1 = p;            
     while (p1 != NULL)  
        {
          x++;    //posizione 
          cout <<" Nodo "<<x<<"--> "<< p1->info<<endl;
          p1 = p1->next;
        }
    } 
  return 0;  
}  

void Ricerca(p_nodo p)
{
	int *p1;
 bool flag=false;
 int x=0;
      cout<<"\n========================================\n";
      cout<<"==== Ricerca di un nodo nella lista ====\n";
      cout<<"========================================\n";
 if (ListaVuota(p_nodo p) == true)
   {
      cout<<"\n digita il codice foto da ricercare .....: ";
      cin>>cerca;
      p1 = p;
      while (p1 != NULL && flag == false)
         {
           x++;    
		    if (p1->info == cerca)
              {
                 flag=true;
              }
           else
              {
                 p1 = p1->psucc;   
              }
         }
     if (flag == true)
          {cout << "\n la foto occupa "<<x+4<<" byte \n";}
     else
          {cout << "\n codice foto non trovato !!\n";}
        return 0;   
   }

void elimina_lista(p_nodo p)
{
 if (listaVuota(p_nodo p) == true)
 {
p = NULL;   
                
cout<<"Lista eliminata!";
 }    
 return 0;     
}
peroò mi da errori in dei sottoprogrammi, come posso risolvere?

22 Risposte

  • Re: Problema parentesi

    Inserisci il codice tra tag CODE o non si capisce nulla. Vedi regolamento
  • Re: Problema parentesi

    #include <iostream>
    using namespace std; 
    
    struct s_nodo
    {
    char codice_foto [30];
    struct s_nodo *next;
    };
    typedef struct s_nodo nodo;
    typedef nodo* p_nodo; 
    
    void CreaNodo();
    void inserimento_coda(p_nodo, p_nodo);
    void inserimento_pila(p_nodo, p_nodo);
    int inputc(int, int);
    char inputc2();
    void menu();
    void menu2();
    bool ListaVuota(p_nodo);
    void EstrazioneT(p_nodo);
    void Visualizzazione(p_nodo);
    void Ricerca(p_nodo);
    void elimina_lista(p_nodo);
    
    
    int main()
    {
    p_nodo pTesta=NULL, p1, p2, nuovo;
    int scelta;
    char scelta2;
    menu();
    cout<<"Fai la tua scelta: "<<endl;
    scelta = inputc(1,3);
    switch(scelta){ 
    
    case 1:
    menu2();
    cin>>scelta2;
    scelta2=inputc2();
    switch(scelta2){ 
    
    case 'a':
    CreaNodo();
    inserimento_pila(pTesta,nuovo);
    break;
    case 'b':
    EstrazioneT(pTesta);
    break;
    case 'c':
    Visualizzazione(pTesta);
    break;
    case 'd':
    Ricerca(pTesta);
    break;
    }
    break; 
    
    case 2:
    menu2();
    cin>>scelta2;
    scelta2=inputc2();
    switch(scelta2){ 
    
    case 'a':
    CreaNodo();
    inserimento_coda(pTesta,nuovo);
    break;
    case 'b':
    EstrazioneT(pTesta);
    break;
    case 'c':
    Visualizzazione(pTesta);
    break;
    case 'd':
    Ricerca(pTesta); 
    
    break;
    case 3:
    elimina_lista(pTesta);
    break;
    return 0;
    } 
    
    void CreaNodo()
    {
    char cod[30];
    double num;
    cout<<"\nDigita il codice della foto da inserire nel nodo...: ";
    cin>>cod;
    cout<<"\nscrivere la dimensione in bytes...: ";
    cin>>num;
    p1 = new nodo;
    p1->codice_foto=cod; 
    
    p1->next=NULL;
    return 0;
    } 
    
    void inserimento_coda(p_nodo p, p_nodo nuovo)
    {
    for (nuovo = p; nuovo->next != NULL; nuovo = nuovo->next)
    {
    nuovo->next = new nodo;
    cout<<"Inserisci in coda il valore nella lista: "<<endl;
    cin>>(nuovo->next)->codice_foto;
    (nuovo->next)->next;
    }
    return 0
    } 
    
    void inserimento_pila(p_nodo p, p_nodo nuovo)
    {
    nuovo = new nodo;
    cout<<"Inserisci in pila il valore nella lista: "<<endl;
    cin>>nuovo->codice_foto;
    nuovo->next = p;
    p = nuovo;
    } 
    
    int inputc(int vmin, int vmax)
    {
    int valore=0;
    do
    {
    cin>>valore;
    if (valore<vmin || valore>vmax)
    {
    cout<<"Valore inserito non accettabile.\n";
    cout<<"Inserire un valore compreso tra "<<vmin<<" e "<<vmax<<": ";
    }
    }while(valore<vmin || valore>vmax); 
    
    return valore;
    } 
    
    char inputc2()
    {
    char risp;
    do{
    cin>>risp;
    if (risp!="a"||risp!= "b"||risp!="c"||risp!="d"){
    cout<<"lettera inserita non accettabile.\n";
    menu2();
    } 
    
    }while(risp!="a"||risp!= "b"||risp!="c"||risp!="d");
    return risp;
    }
    
    
    void menu()
    {
    cout<<"//////////////////////////////////////////"<<endl;
    cout<<"Premi 1 se vuoi una lista gestita in coda"<<endl;
    cout<<"Premi 2 se vuoi una lista gestita in pila"<<endl;
    cout<<"Premi 3 se vuoi deallocare una lista"<<endl;
    cout<<"//////////////////////////////////////////"<<endl;
    } 
    
    void menu2()
    {
    cout<<"//////////////////////////////////////////"<<endl;
    cout<<"digita a se vuoi creare un nodo"<<endl;
    cout<<"digita b se vuoi estrarre"<<endl;
    cout<<"digita c se vuoi visualizzare"<<endl;
    cout<<"digita d se vuoi cercare in base al codice foto"<<endl;
    cout<<"//////////////////////////////////////////"<<endl; 
    
    } 
    
    bool ListaVuota(p_nodo p)
    {
    bool vuota = true;
    if ( p == NULL)
    {
    cout <<" ATTENZIONE !! Lista vuota. "<<endl;
    vuota = false;
    } 
    
    return vuota;
    } 
    
    void EstrazioneT(p_nodo p)
    {
    int *p1;
    cout<<"\n===============================";
    cout<<"\n==== Estrazione di un nodo ====";
    cout<<"\n===============================\n"; 
    
    if (ListaVuota(p) == true)
    {
    p1 = p;
    cout << " Nodo estratto ---> " << p1->inf<<endl;
    if (p1->next == NULL)
    {
    p = NULL;
    }
    }
    return 0;
    } 
    
    void Visualizzazione(p_nodo p)
    {
    int *p1;
    int x;
    if (ListaVuota(p) == true)
    {
    p1 = p;
    while (p1 != NULL)
    {
    x++; //posizione
    cout <<" Nodo "<<x<<"--> "<< p1->info<<endl;
    p1 = p1->next;
    }
    }
    return 0;
    } 
    
    void Ricerca(p_nodo p)
    {
    int *p1;
    bool flag=false;
    int x=0;
    cout<<"\n========================================\n";
    cout<<"==== Ricerca di un nodo nella lista ====\n";
    cout<<"========================================\n";
    if (ListaVuota(p_nodo p) == true)
    {
    cout<<"\n digita il codice foto da ricercare .....: ";
    cin>>cerca;
    p1 = p;
    while (p1 != NULL && flag == false)
    {
    x++;
    if (p1->info == cerca)
    {
    flag=true;
    }
    else
    {
    p1 = p1->psucc;
    }
    }
    if (flag == true)
    {cout << "\n la foto occupa "<<x+4<<" byte \n";}
    else
    {cout << "\n codice foto non trovato !!\n";}
    return 0;
    }
    
  • Re: Problema parentesi

    Mancano due parentesi chiuse per il main
  • Re: Problema parentesi

    Ora come posso risolvere il problema dell'if per capire se il carattere è uno tra a b c d?
    
    
    #include <iostream>
    using namespace std;
    
    struct s_nodo
    {
    	char codice_foto [30];
    	struct s_nodo *next;
    };
    typedef struct s_nodo nodo;
    typedef nodo* p_nodo;
    
    void CreaNodo();
    void inserimento_coda(p_nodo, p_nodo);
    void inserimento_pila(p_nodo, p_nodo);
    int inputc(int, int);
    char inputc2();
    void menu();
    void menu2();
    bool ListaVuota(p_nodo);
    void EstrazioneT(p_nodo);
    void Visualizzazione(p_nodo);
    void Ricerca(p_nodo);
    void elimina_lista(p_nodo);
    
    
    int main()
    {
    	p_nodo pTesta=NULL, p1, p2, nuovo;
    	int scelta;
    	char scelta2;
    	menu();
    	cout<<"Fai la tua scelta: "<<endl;
    	scelta = inputc(1,3);
        switch(scelta){
            
            case 1: 
            menu2();
            cin>>scelta2;
            scelta2=inputc2();
            switch(scelta2){
                
                case 'a':
                CreaNodo();
                inserimento_pila(pTesta,nuovo);
                break;
                case 'b':
                EstrazioneT(pTesta);
                break;
                case 'c':
                Visualizzazione(pTesta);
                break;
                case 'd':
    			Ricerca(pTesta);
    			break;				
            }
            break;
            
            case 2:
            menu2();
            cin>>scelta2;
            scelta2=inputc2();
            switch(scelta2){
                
                case 'a':
                CreaNodo();
             	inserimento_coda(pTesta,nuovo);
                break;
                case 'b':
                EstrazioneT(pTesta);
                break;
                case 'c':
                Visualizzazione(pTesta);
                break;
                case 'd':
    			Ricerca(pTesta);
            
            	break;
            	case 3:
            	elimina_lista(pTesta);
            	break;
            return 0;
        }
    }
    }
    void CreaNodo()
    {
        char cod[30];
        double num;
        cout<<"\nDigita il codice della foto da inserire nel nodo...:  ";
        cin>>cod;
        cout<<"\nscrivere la dimensione in bytes...:  ";
        cin>>num;
        p1 = new nodo;       
        p1->codice_foto=cod;      
                                 
        p1->next=NULL;                         
    } 
    
    void inserimento_coda(p_nodo p, p_nodo nuovo)
    {
    	for (nuovo = p; nuovo->next != NULL; nuovo = nuovo->next)
    	{
    		nuovo->next = new nodo;
    		cout<<"Inserisci in coda il valore nella lista: "<<endl;
    		cin>>(nuovo->next)->codice_foto;
    		(nuovo->next)->next;
    	}
    }
    
    void inserimento_pila(p_nodo p, p_nodo nuovo)
    {
    	nuovo = new nodo;
    	cout<<"Inserisci in pila il valore nella lista: "<<endl;
    	cin>>nuovo->codice_foto;
    	nuovo->next = p;
    	p = nuovo;
    }
    
    int inputc(int vmin, int vmax)
    {
    	int valore=0;	
    	do
    	{
    	    cin>>valore;
    	    if (valore<vmin || valore>vmax)
    	    {
    	    	cout<<"Valore inserito non accettabile.\n";
    	    	cout<<"Inserire un valore compreso tra "<<vmin<<" e "<<vmax<<": ";
    		}
    	}while(valore<vmin || valore>vmax);
    	
    return valore;
    }
    
    char inputc2()
    {
        char risp;
            do{
                   cin>>risp;
                   if (risp!="a"||risp!= "b"||risp!="c"||risp!="d"){
                   	cout<<"lettera inserita non accettabile.\n";     
                   	menu2();
                   }
                   
            }while(risp!="a"||risp!= "b"||risp!="c"||risp!="d");
    return risp;
    }
    
    
    void menu()
    {
    	cout<<"//////////////////////////////////////////"<<endl;
    	cout<<"Premi 1 se vuoi una lista gestita in coda"<<endl;
    	cout<<"Premi 2 se vuoi una lista gestita in pila"<<endl;
    	cout<<"Premi 3 se vuoi deallocare una lista"<<endl;
    	cout<<"//////////////////////////////////////////"<<endl;
    }
    
    void menu2()
    {
    	cout<<"//////////////////////////////////////////"<<endl;
    	cout<<"digita a se vuoi creare un nodo"<<endl;
    	cout<<"digita b se vuoi estrarre"<<endl;
    	cout<<"digita c se vuoi visualizzare"<<endl;
    	cout<<"digita d se vuoi cercare in base al codice foto"<<endl;
    	cout<<"//////////////////////////////////////////"<<endl;
    
    }
    
    bool ListaVuota(p_nodo p)
    {
      bool vuota = true;
      if ( p == NULL)    
        {
          cout <<" ATTENZIONE !! Lista vuota. "<<endl;   
          vuota = false;
        }
     
      return vuota;
    }
    
    void EstrazioneT(p_nodo p)
    {
    	int *p1;
        cout<<"\n===============================";
        cout<<"\n==== Estrazione di un nodo ====";
        cout<<"\n===============================\n";
      
      if (ListaVuota(p) == true)
        {
           p1 = p;   
           cout << " Nodo estratto --->  " << p1->inf<<endl;
           if (p1->next == NULL)
               {
    		   p = NULL;
    		   }
        }
    
    }
    
    void Visualizzazione(p_nodo p)
    {
    	int *p1;
    	int x;
     if (ListaVuota(p) == true)
       {
         p1 = p;            
         while (p1 != NULL)  
            {
              x++;    //posizione 
              cout <<" Nodo "<<x<<"--> "<< p1->info<<endl;
              p1 = p1->next;
            }
        } 
       
    }  
    
    void Ricerca(p_nodo p)
    {
    	int *p1;
     bool flag=false;
     int x=0;
          cout<<"\n========================================\n";
          cout<<"==== Ricerca di un nodo nella lista ====\n";
          cout<<"========================================\n";
     if (ListaVuota(p_nodo p) == true)
       {
          cout<<"\n digita il codice foto da ricercare .....: ";
          cin>>cerca;
          p1 = p;
          while (p1 != NULL && flag == false)
             {
               x++;    
    		    if (p1->info == cerca)
                  {
                     flag=true;
                  }
               else
                  {
                     p1 = p1->psucc;   
                  }
             }
         if (flag == true)
              {cout << "\n la foto occupa "<<x+4<<" byte \n";}
         else
              {cout << "\n codice foto non trovato !!\n";}
     
       }
    }
    void elimina_lista(p_nodo p)
    {
     if (listaVuota(p_nodo p) == true)
     {
    p = NULL;   
                    
    cout<<"Lista eliminata!";
     }    
         
    }
  • Re: Problema parentesi

    Ma di cosa parli?
  • Re: Problema parentesi

    In pratica quando avvio questo codice, il menu2 non parte.Parte direttamente la creazione del nodo inoltre mi si impalla quando do in input altre lettere. mi puoi aiutare?

    #include <iostream>
    using namespace std;
    
    struct s_nodo
    {
    	char codice_foto [30];
    	struct s_nodo *next;
    };
    typedef struct s_nodo nodo;
    typedef nodo* p_nodo;
    
    void CreaNodo();
    void inserimento_coda(p_nodo, p_nodo);
    void inserimento_pila(p_nodo, p_nodo);
    int inputc(int, int);
    char inputc2();
    void menu();
    void menu2();
    bool ListaVuota(p_nodo);
    void EstrazioneT(p_nodo);
    void Visualizzazione(p_nodo);
    void Ricerca(p_nodo);
    void elimina_lista(p_nodo);
    
    
    int main()
    {
    	p_nodo pTesta=NULL, p1, p2, nuovo;
    	int scelta;
    	char scelta2;
    	menu();
    	cout<<"Fai la tua scelta: "<<endl;
    	scelta = inputc(1,3);
        switch(scelta){
            
            case 1: 
            menu2();
            cin>>scelta2;
            scelta2=inputc2();
            switch(scelta2){
                
                case 'a':
                CreaNodo();
                inserimento_pila(pTesta,nuovo);
                break;
                case 'b':
                EstrazioneT(pTesta);
                break;
                case 'c':
                Visualizzazione(pTesta);
                break;
                case 'd':
    			Ricerca(pTesta);
    			break;				
            }
            break;
            
            case 2:
            menu2();
            cin>>scelta2;
            scelta2=inputc2();
            switch(scelta2){
                
                case 'a':
                CreaNodo();
             	inserimento_coda(pTesta,nuovo);
                break;
                case 'b':
                EstrazioneT(pTesta);
                break;
                case 'c':
                Visualizzazione(pTesta);
                break;
                case 'd':
    			Ricerca(pTesta);
            
            	break;
            	case 3:
            	elimina_lista(pTesta);
            	break;
            return 0;
        }
    }
    }
    void CreaNodo()
    {
        char cod[30];
       p_nodo p1;
        double num;
        cout<<"\nDigita il codice della foto da inserire nel nodo...:  ";
        cin>>cod;
        cout<<"\nscrivere la dimensione in bytes...:  ";
        cin>>num;
        p1 = new nodo;     
        p1->codice_foto[30]=cod[30];      
                                 
        p1->next=NULL;                         
    } 
    
    void inserimento_coda(p_nodo p, p_nodo nuovo)
    {
    	for (nuovo = p; nuovo->next != NULL; nuovo = nuovo->next)
    	{
    		nuovo->next = new nodo;
    		cout<<"Inserisci in coda il valore nella lista: "<<endl;
    		cin>>(nuovo->next)->codice_foto;
    		(nuovo->next)->next;
    	}
    }
    
    void inserimento_pila(p_nodo p, p_nodo nuovo)
    {
    	nuovo = new nodo;
    	cout<<"Inserisci in pila il valore nella lista: "<<endl;
    	cin>>nuovo->codice_foto;
    	nuovo->next = p;
    	p = nuovo;
    }
    
    int inputc(int vmin, int vmax)
    {
    	int valore=0;	
    	do
    	{
    	    cin>>valore;
    	    if (valore<vmin || valore>vmax)
    	    {
    	    	cout<<"Valore inserito non accettabile.\n";
    	    	cout<<"Inserire un valore compreso tra "<<vmin<<" e "<<vmax<<": ";
    		}
    	}while(valore<vmin || valore>vmax);
    	
    return valore;
    }
    
    char inputc2()
    {
        char risp;
            do{
                   cin>>risp;
                   if (risp!='a' ||risp!= 'b'||risp!= 'c' ||risp!= 'd' ){
                   	cout<<"lettera inserita non accettabile.\n";     
                   	menu2();
                   }
                   
            }while(risp!='a' ||risp!= 'b'||risp!= 'c' ||risp!= 'd');
    return risp;
    }
    
    
    void menu()
    {
    	cout<<"//////////////////////////////////////////"<<endl;
    	cout<<"Premi 1 se vuoi una lista gestita in coda"<<endl;
    	cout<<"Premi 2 se vuoi una lista gestita in pila"<<endl;
    	cout<<"Premi 3 se vuoi deallocare una lista"<<endl;
    	cout<<"//////////////////////////////////////////"<<endl;
    }
    
    void menu2()
    {
    	cout<<"//////////////////////////////////////////"<<endl;
    	cout<<"digita a se vuoi creare un nodo"<<endl;
    	cout<<"digita b se vuoi estrarre"<<endl;
    	cout<<"digita c se vuoi visualizzare"<<endl;
    	cout<<"digita d se vuoi cercare in base al codice foto"<<endl;
    	cout<<"//////////////////////////////////////////"<<endl;
    
    }
    
    bool ListaVuota(p_nodo p)
    {
      bool vuota = true;
      if ( p == NULL)    
        {
          cout <<" ATTENZIONE !! Lista vuota. "<<endl;   
          vuota = false;
        }
     
      return vuota;
    }
    
    void EstrazioneT(p_nodo p)
    {
    	 p_nodo p1;
        cout<<"\n===============================";
        cout<<"\n==== Estrazione di un nodo ====";
        cout<<"\n===============================\n";
      
      if (ListaVuota(p) == true)
        {
           p1 = p;   
           cout << " Nodo estratto --->  " << p1->codice_foto<<endl;
           if (p1->next == NULL)
               {
    		   p = NULL;
    		   }
        }
    
    }
    
    void Visualizzazione(p_nodo p)
    {
    	p_nodo p1;
    	int x;
     if (ListaVuota(p) == true)
       {
         p1 = p;            
         while (p1 != NULL)  
            {
              x++;    //posizione 
              cout <<" Nodo "<<x<<"--> "<< p1->codice_foto<<endl;
              p1 = p1->next;
            }
        } 
       
    }  
    
    void Ricerca(p_nodo p)
    {
     p_nodo p1;
     bool flag=false;
     int x=0;
          cout<<"\n========================================\n";
          cout<<"==== Ricerca di un nodo nella lista ====\n";
          cout<<"========================================\n";
     if (ListaVuota(p) == true)
       {
          cout<<"\n digita il codice foto da ricercare .....: ";
          cin>>p->codice_foto;
          p1 = p;
          while (p1 != NULL && flag == false)
             {
               x++;    
    		    if (p1->codice_foto == p->codice_foto)
                  {
                     flag=true;
                  }
               else
                  {
                     p1 = p1->next;   
                  }
             }
         if (flag == true)
              {cout << "\n la foto occupa "<<x+4<<" byte \n";}
         else
              {cout << "\n codice foto non trovato !!\n";}
     
       }
    }
    void elimina_lista(p_nodo p)
    {
     if (ListaVuota(p) == true)
     {
    p = NULL;   
                    
    cout<<"Lista eliminata!";
     }    
         
    }
  • Re: Problema parentesi

    Sto seguendo il discorso, non ho capito fino a dove funziona e dove smette di funzionare.

    il programma viene compilato in modo corretto, parte l'esecuzione stampa in menu, viene richiesta la prima lettera e poi si blocca?

    se ho capito bene arrivi fino a
    scelta = inputc(1,3);
    giusto?
  • Re: Problema parentesi

    No,praticamente mi sono sbagliato. fà vedere i 2 menu ma non fà le operazioni quando si mette la lettera
  • Re: Problema parentesi

    Il codice non viene compilato correttamente perché esistono tanti errori sparsi.

    Non so che compilatore usi
  • Re: Problema parentesi

    Uso il c++ normale,perfavore mi puoi almeno individuare gli errori? io non riesco a farlo
  • Re: Problema parentesi

    Lo so che usi il C++ (stiamo discutendo da un po' su questo) ma intendevo quale marca e versione di compilatore, magari su quale sistema operativo.

    Gli errori sono decine e il compilatore li elenca ... adesso è inutile che te li elenchi io dato che lo fa il compilatore.
  • Re: Problema parentesi

    Uso questo su windows HP
  • Re: Problema parentesi

    Ma vedi l'ultimo codice che ho messo,gli errori dell'ultimo. gli altri li ho fixati
  • Re: Problema parentesi

    Gli errori che ci sono quando compilo io sono questi ... ovviamente non possiamo parlare di tutto in un thread ... comincia a dare un'occhiata e correggi (dovresti utilizzare un compilatore sulla tua macchina, uno serio)

    Errore C2065 'p1': identificatore non dichiarato
    Errore C2065 'p1': identificatore non dichiarato
    Errore C2227 l'elemento a sinistra di '->codice_foto' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2065 'p1': identificatore non dichiarato
    Errore C2227 l'elemento a sinistra di '->next' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2446 '!=': nessuna conversione da 'const char *' a 'int'
    Errore C2446 '!=': nessuna conversione da 'const char *' a 'int'
    Errore C2440 '=': impossibile convertire da 'p_nodo' a 'int *'
    Errore C2227 l'elemento a sinistra di '->inf' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2227 l'elemento a sinistra di '->next' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2440 '=': impossibile convertire da 'p_nodo' a 'int *'
    Errore C2227 l'elemento a sinistra di '->info' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2227 l'elemento a sinistra di '->next' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2275 'p_nodo': tipo non valido come espressione
    Errore C2146 errore di sintassi: ')' mancante prima dell'identificatore 'p'
    Errore C2143 errore di sintassi: ';' mancante prima di '{'
    Errore C2065 'cerca': identificatore non dichiarato
    Errore C2440 '=': impossibile convertire da 'p_nodo' a 'int *'
    Errore C2227 l'elemento a sinistra di '->info' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2065 'cerca': identificatore non dichiarato
    Errore C2227 l'elemento a sinistra di '->psucc' deve puntare a un tipo classe, struttura, unione o generico
    Errore C2275 'p_nodo': tipo non valido come espressione
    Errore C2146 errore di sintassi: ')' mancante prima dell'identificatore 'p'
    Errore C2143 errore di sintassi: ';' mancante prima di '{'


    E comunque il compilatore online che hai indicato elenca questi errori

    main.cpp:93:2: error: ‘p1’ was not declared in this scope
    93 | p1 = new nodo;
    | ^~
    main.cpp: In function ‘char inputc2()’:
    main.cpp:140:15: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    140 | if (risp != "a" || risp != "b" || risp != "c" || risp != "d") {
    | ^~~
    main.cpp:140:30: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    140 | if (risp != "a" || risp != "b" || risp != "c" || risp != "d") {
    | ^~~
    main.cpp:140:45: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    140 | if (risp != "a" || risp != "b" || risp != "c" || risp != "d") {
    | ^~~
    main.cpp:140:60: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    140 | if (risp != "a" || risp != "b" || risp != "c" || risp != "d") {
    | ^~~
    main.cpp:145:19: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    145 | } while (risp != "a" || risp != "b" || risp != "c" || risp != "d");
    | ^~~
    main.cpp:145:34: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    145 | } while (risp != "a" || risp != "b" || risp != "c" || risp != "d");
    | ^~~
    main.cpp:145:49: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    145 | } while (risp != "a" || risp != "b" || risp != "c" || risp != "d");
    | ^~~
    main.cpp:145:64: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
    145 | } while (risp != "a" || risp != "b" || risp != "c" || risp != "d");
    | ^~~
    main.cpp: In function ‘void EstrazioneT(p_nodo)’:
    main.cpp:191:8: error: cannot convert ‘p_nodo’ {aka ‘s_nodo*’} to ‘int*’ in assignment
    191 | p1 = p;
    | ^
    | |
    | p_nodo {aka s_nodo*}
    main.cpp:192:42: error: request for member ‘inf’ in ‘* p1’, which is of non-class type ‘int’
    192 | cout << " Nodo estratto ---> " << p1->inf << endl;
    | ^~~
    main.cpp:193:11: error: request for member ‘next’ in ‘* p1’, which is of non-class type ‘int’
    193 | if (p1->next == NULL)
    | ^~~~
    main.cpp: In function ‘void Visualizzazione(p_nodo)’:
    main.cpp:207:8: error: cannot convert ‘p_nodo’ {aka ‘s_nodo*’} to ‘int*’ in assignment
    207 | p1 = p;
    | ^
    | |
    | p_nodo {aka s_nodo*}
    main.cpp:211:43: error: request for member ‘info’ in ‘* p1’, which is of non-class type ‘int’
    211 | cout << " Nodo " << x << "--> " << p1->info << endl;
    | ^~~~
    main.cpp:212:13: error: request for member ‘next’ in ‘* p1’, which is of non-class type ‘int’
    212 | p1 = p1->next;
    | ^~~~
    main.cpp: In function ‘void Ricerca(p_nodo)’:
    main.cpp:226:24: error: expected primary-expression before ‘p’
    226 | if (ListaVuota(p_nodo p) == true)
    | ^
    main.cpp:229:10: error: ‘cerca’ was not declared in this scope; did you mean ‘Ricerca’?
    229 | cin >> cerca;
    | ^~~~~
    | Ricerca
    main.cpp:230:8: error: cannot convert ‘p_nodo’ {aka ‘s_nodo*’} to ‘int*’ in assignment
    230 | p1 = p;
    | ^
    | |
    | p_nodo {aka s_nodo*}
    main.cpp:234:12: error: request for member ‘info’ in ‘* p1’, which is of non-class type ‘int’
    234 | if (p1->info == cerca)
    | ^~~~
    main.cpp:240:14: error: request for member ‘psucc’ in ‘* p1’, which is of non-class type ‘int’
    240 | p1 = p1->psucc;
    | ^~~~~
    main.cpp: In function ‘void elimina_lista(p_nodo)’:
    main.cpp:256:24: error: expected primary-expression before ‘p’
    256 | if (listaVuota(p_nodo p) == true)
    | ^
    main.cpp:256:6: error: ‘listaVuota’ was not declared in this scope; did you mean ‘ListaVuota’?
    256 | if (listaVuota(p_nodo p) == true)
    | ^~~~~~~~~~
    | ListaVuota

    Quindi come fai ad eseguire il codice??
Devi accedere o registrarti per scrivere nel forum
22 risposte