Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429

    [C++] Aiuto su programma rubrica

    Mi dovete aiutare...sto realizzando una rubrica con le liste, ma mi sono trovato davanti un errore che nn capisco.
    Praticamente compilando mi viene segnalata la necessità del lvalue nell'assegnamento...ma il lvalue c'è....forse mi da errore perchè l'assegnamento è tra due stringhe???
    Sotto c'è il codice del programma...vi prego provate a compilarlo anche voi e vedete l'errore....

    codice:
    #include <iostream.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    typedef char stringa[40];
    struct membro{
         stringa nome;
         stringa cognome;
         stringa citta;
         stringa numero_casa;
         stringa cellulare;
         stringa email;
         membro * succ;
    };
    membro * lista=NULL;
    membro * first=NULL;
    membro * prev;
    membro * next;
    
    void cornice(void);
    void aggiungi(void);
    void modifica(void);
    void cancella(void);
    void ricerca(void);
    void visualizza(void);
    int scelta, termina=0, nomu=0;
    
    int main(){
         clrscr();
         cornice();
         do{
    	 gotoxy(60,18);
    	 cin>>scelta;
    	 switch(scelta){
    	     case 1:
    		 aggiungi();
    		 break;
    	     case 2:
    		 modifica();
    		 break;
    	     case 3:
    		 cancella();
    		 break;
    	     case 4:
    		 ricerca();
    		 break;
    	     case 5:
    		 visualizza();
    		 break;
    	     case 6:
    		 termina=1;
    		 break;
    	     default:
    		 gotoxy(13,23);
    		 cout<<"!!! ATTENZIONE !!! Devi inserire uno dei valori indicati";
    		 getch();
    		 gotoxy(13,23);
    		 cout<<"                                                        ";
    		 gotoxy(60,18);
    		 cout<<"     ";
    	 }
         }while(termina==0);
         getch();
         return 0;
    }
    
    void aggiungi(void){
         int i=1, num_membri=0, ins=0;
         stringa nomex, cognomex, cittax, cellx, casax, emailx;
         clrscr();
         nomu=1;
         cornice();
         gotoxy(24,3);
         cout<<"AGGIUNTA DI UN MEMBRO ALLA RUBRICA";
         gotoxy(5,7);
         cout<<"Inserisci il NOME : ";
         cin>>nomex;
         gotoxy(5,9);
         cout<<"Inserisci il COGNOME : ";
         cin>>cognomex;
         gotoxy(5,11);
         cout<<"Inserisci la CITTA' : ";
         cin>>cittax;
         gotoxy(5,13);
         cout<<"Inserisci il NUMERO DI CELLULARE : ";
         cin>>cellx;
         gotoxy(5,15);
         cout<<"Inserisci il NUMERO DI CASA : ";
         cin>>casax;
         gotoxy(5,17);
         cout<<"Inserisci l'INDIRIZZO DI POSTA ELETTRONICA : ";
         cin>>emailx;
         num_membri++;
         while(i<=num_membri){
    	 if(first==NULL){
    	      lista=new(membro);
    	      lista->nome=nomex;
    	      lista->cognome=cognomex;
    	      lista->citta=cittax;
    	      lista->cellulare=cellx,
    	      lista->numero_casa=casax;
    	      lista->email=emailx;
    	      lista->succ=NULL;
    	      first=lista;
    	 }
    	 else{
    	      lista=first;
    	      ins=0;
    	      while(ins==0){
    		   if(lista->succ!=NULL){
    			 if(strcmp(cognomex,lista->cognome)>0){
    				    prev=lista;
    				    lista=lista->succ;
    				    next=lista;
    			 }
    			 else{
    				    if(lista!=first){
    					     prev->succ=new(membro);
    					     lista=prev->succ;
    					     lista->nome=nomex;
    					     lista->cognome=cognomex;
    					     lista->citta=cittax;
    					     lista->cellulare=cellx,
    					     lista->numero_casa=casax;
    					     lista->email=emailx;
    					     lista->succ=next;
    					     ins=1;
    				    }
    				    else{
    					     next=first;
    					     lista=new(membro);
    					     lista->nome=nomex;
    					     lista->cognome=cognomex;
    					     lista->citta=cittax;
    					     lista->cellulare=cellx,
    					     lista->numero_casa=casax;
    					     lista->email=emailx;
    					     lista->succ=next;
    					     first=lista;
    					     ins=1;
    				    }
    			 }
    		   }
    		   else{
    			 if(strcmp(cognomex,lista->cognome)>0){
    				    lista->succ=new(membro);
    				    lista=lista->succ;
    				    lista->nome=nomex;
    				    lista->cognome=cognomex;
    				    lista->citta=cittax;
    				    lista->cellulare=cellx,
    				    lista->numero_casa=casax;
    				    lista->email=emailx;
    				    lista->succ=NULL;
    				    ins=1;
    			 }
    			 else{
    				    if(prev!=NULL){
    					     prev->succ=new(membro);
    					     lista=prev->succ;
    					     lista->nome=nomex;
    					     lista->cognome=cognomex;
    					     lista->citta=cittax;
    					     lista->cellulare=cellx,
    					     lista->numero_casa=casax;
    					     lista->email=emailx;
    					     lista->succ=next;
    					     ins=1;
    				    }
    				    else{
    					     next=first;
    					     lista=new(membro);
    					     lista->nome=nomex;
    					     lista->cognome=cognomex;
    					     lista->citta=cittax;
    					     lista->cellulare=cellx,
    					     lista->numero_casa=casax;
    					     lista->email=emailx;
    					     lista->succ=next;
    					     first=lista;
    					     ins=1;
    				    }
    			 }
    		   }
    	      }
    	 }
    	 i++;
         }
         clrscr();
         nomu=0;
         cornice();
    }
    
    void modifica(void){
    }
    
    void cancella(void){
    }
    
    void visualizza(void){
    }
    
    void ricerca(void){
         int trovato=0;
         stringa nomet;
         clrscr();
         nomu=1;
         cornice();
         lista=first;
         gotoxy(5,7);
         cout<<"Inserisci il nome del membro da trovare : ";
         cin>>nomet;
         while((trovato==0)&&(lista!=NULL)){
    	  if(strcmp(lista->nome,nomet)==0){
    	      trovato=1;
    	  }
    	  else
    	      lista=lista->succ;
         }
         if(trovato==0){
    	  gotoxy(4,10);
    	  cout<<"Il membro di nome " <<nomet <<" non e' presente in rubrica.";
         }
         else{
    	  gotoxy(4,10);
    	  cout<<"Ecco i dati del membro di nome " <<nomet <<" :";
    	  gotoxy(6,12);
    	  cout<<"Nome: "<<lista->nome;
    	  gotoxy(6,14);
    	  cout<<"Cognome: "<<lista->cognome;
    	  gotoxy(6,16);
    	  cout<<"Citta': "<<lista->citta;
    	  gotoxy(6,18);
    	  cout<<"Numero del cellulare: "<<lista->cellulare;
    	  gotoxy(6,20);
    	  cout<<"Numero di casa: "<<lista->numero_casa;
    	  gotoxy(6,22);
    	  cout<<"Indirizzo email: "<<lista->email;
         }
         getch();
         clrscr();
         nomu=0;
         cornice();
    }
    
    void cornice(void){
         char ch;
         int i;
         ch=201;
         gotoxy(1,1);
         cout<<ch;
         ch=187;
         gotoxy(80,1);
         cout<<ch;
         ch=205;
         for(i=0;i<78;i++){
    	 gotoxy(2+i,1);
    	 cout<<ch;
    	 gotoxy(2+i,5);
    	 cout<<ch;
    	 gotoxy(2+i,25);
    	 cout<<ch;
         }
         ch=186;
         for(i=0;i<23;i++){
    	 gotoxy(1,2+i);
    	 cout<<ch;
    	 gotoxy(80,2+i);
    	 cout<<ch;
         }
         ch=204;
         gotoxy(1,5);
         cout<<ch;
         ch=185;
         gotoxy(80,5);
         cout<<ch;
         ch=200;
         gotoxy(1,25);
         cout<<ch;
         ch=188;
         gotoxy(80,25);
         cout<<ch;
         if(nomu==0){
           gotoxy(24,3);
           cout<<"RUBRICA DEL GRUPPO 5 2004/2005";
           gotoxy(5,7);
           cout<<"1. Aggiungi numero";
           gotoxy(5,9);
           cout<<"2. Modifica numero";
           gotoxy(5,11);
           cout<<"3. Cancella numero";
           gotoxy(5,13);
           cout<<"4. Ricerca  numero";
           gotoxy(5,15);
           cout<<"5. Visualizza cognomi della rubrica";
           gotoxy(5,17);
           cout<<"6. Esci dalla rubrica";
           gotoxy(15,20);
           cout<<"FAI LA TUA SCELTA >>> Inserisci un valore : ";
         }
    }

  2. #2
    Allora...
    1)cambia i tuoi include in:
    codice:
    #include <iostream>
    #include <cconio>
    #include <cstdlib>
    #include <cstdio>
    #include <cstring>
    In questo modo vengono dichiarati correttamente come header C++. Tra l'altro non dovresti includere iostream e cstdio; o usi le funzioni IO C o quelle C++.

    2)Ricorda di aggiungere SEMPRE using namespace std; dopo gli header.

    3)Ci sono alcune funzioni (clrscr, gotoxy, ect), non portabili, che il mio compilatore (mingw 3.3.1) non gradisce.

    Altre info tra poco...

  3. #3
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Originariamente inviato da gandalf45
    Allora...
    1)cambia i tuoi include in:
    codice:
    #include <iostream>
    #include <cconio>
    #include <cstdlib>
    #include <cstdio>
    #include <cstring>
    In questo modo vengono dichiarati correttamente come header C++. Tra l'altro non dovresti includere iostream e cstdio; o usi le funzioni IO C o quelle C++.

    2)Ricorda di aggiungere SEMPRE using namespace std; dopo gli header.

    3)Ci sono alcune funzioni (clrscr, gotoxy, ect), non portabili, che il mio compilatore (mingw 3.3.1) non gradisce.

    Altre info tra poco...
    Io utilizzo TurboC++ della borland come compilatore...le librerie da te suggerite non le supporta ancora...o cmq la verione che ho nn le supporta...quindi come fare???

  4. #4
    Che versione di Turbo C++?
    Temo comunque che Turbo C++ sia piuttosto datato: perchè non passare a Mingw, gratuito e aggiornato?

    [edit]E se non hai problemi nello scaricare grossi(10mb) file qui trovi IDE e Compilatore insieme: http://prdownloads.sourceforge.net/d....9.2_setup.exe

  5. #5
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    nn puoi assegnare le stringhe, devi copiarle con strcpy..
    poi guardando velocemente mi sembrano fatte male quelle liste..

  6. #6
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Se lavori in C++ perche utilizzi i vecchi costrutti C invece che la STL? :master:
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  7. #7
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    dunque dovrei utilizzare strcpy, anche se ho risolto il problema, facendo l'assegnamento tra due struct.

    Cmq perchè le liste sono fatte male?

    @infinitejustice: Alle STL ci devo ancora arrivare...

    @gandalf45: Grazie per il suggerimento

  8. #8
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    beh potresti darci un'occhiata prima ...visto che ti permette di gestire le stringhe ed i contenitori (fra cui le liste) e tutte le operazioni associate ad esse, senza quindi doverti preoccupare di farlo tu
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

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 © 2024 vBulletin Solutions, Inc. All rights reserved.