Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - stringhe in c++
Forum - C/C++ - stringhe in c++

Avatar
alukard990 (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/02/2010

Segnala al moderatore
Postato alle 12:27
Lunedì, 01/02/2010
Salve a tutti sto scrivendo un semplice programma che dato un vettore di strutture contente 2 campi di cui il primo formato dal nome della persona e il secondo dalla sua età, si stampi a video il suo contenuto; mi potreste dire dove ho sbagliato??
P.S sono alle prime armi in programmazione e mi scuso con tutti per eventuali errori da pivello
Codice sorgente - presumibilmente C++

  1. const int max_dim=30;
  2.  
  3. struct persona
  4. {
  5.        std::string nome;
  6.        int eta;
  7. };
  8.  
  9. typedef persona vettore[max_dim];
  10.  
  11. void leggi_vett(const vettore, int &);
  12. void stampa_vett(const vettore, int);



Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. #include "lib.h"
  4.  
  5. using namespace std;
  6. using std::string;
  7.  
  8. int main()
  9. {
  10.     int riemp;
  11.     vettore v;
  12.    
  13. leggi_vett(v,riemp);
  14. stampa_vett(v,riemp);
  15.  
  16. system("PAUSE");
  17. return 0;
  18.  
  19. }



Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. #include "lib.h"
  4.  
  5. using namespace std;
  6. using std::string;
  7.  
  8. void leggi_vett(const vettore v, int &riemp)
  9. {
  10.      int i;
  11.      
  12.      cout<<"inserire riempimento"<<endl;
  13.      cin>>riemp;
  14.      
  15.      cout<<"inserire valori nella struttura"<<endl;
  16.      
  17. for(i=0; i< riemp; i++)
  18. {
  19.          std::cin>>v[i].nome;
  20.          cin>>v[i].eta;
  21. }
  22.  
  23. }
  24.  
  25.  
  26. void stampa_vett(const vettore v, int riemp)
  27. {
  28.      int i;
  29.      
  30.     cout<<"elementi della struttura"<<endl;
  31.    
  32.     for(i=0;i<riemp;i++)
  33.     {
  34.                         std::cout<<v[i].nome;
  35.                         cout<<v[i].eta;
  36.     }
  37.    
  38. }



Ultima modifica effettuata da alukard990 il 01/02/2010 alle 12:27
PM Quote
Avatar
alukard990 (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/02/2010

Segnala al moderatore
Postato alle 14:31
Lunedì, 01/02/2010
ecco l'errore : lib.cpp In function `void leggi_vett(const persona*, int&':
no match for 'operator>>' in 'std::cin >> ((+(((unsigned int)i) * 8u)) + v)->persona::nome'


scusate se non l'ho postato prima mi ero dimenticato :(

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 22:10
Lunedì, 01/02/2010
Ciao!

Ho letto il tuo programma, e ho capito che l' errore sta nella funzione leggi_vett:
tu dichiari " void leggi_vett(const vettore v, int &riemp) ", v come const quindi non è possibile modificarlo!

Non capisco come mai spesso usi std::... nonostante sia stato dichiarato
"using namespace std;"
e la dichiarazione "using std::string;" nel file del maine.

Ecco il sorgente corretto:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. const int max_dim=30;
  8.  
  9. struct persona
  10. {
  11.        string nome;  
  12.        int eta;
  13. };
  14.  
  15. typedef struct persona vettore[max_dim];
  16.  
  17. void leggi_vett(vettore, int &);
  18. void stampa_vett(const vettore, int);      
  19.  
  20.  
  21.  
  22. int main()
  23. {
  24.     int riemp;
  25.     vettore v;
  26.      
  27. leggi_vett(v,riemp);
  28. stampa_vett(v,riemp);
  29.  
  30. system("PAUSE");
  31. return 0;
  32.  
  33. }
  34.  
  35. void leggi_vett(vettore v, int &riemp)
  36. {
  37.      int i;
  38.      string fr;
  39.      int e=0;
  40.      
  41.      cout<<"inserire riempimento"<<endl;
  42.      cin>>riemp;
  43.      
  44.      cout<<"inserire valori nella struttura"<<endl;
  45.      
  46. for(i=0; i< riemp; i++)
  47. {
  48.          cout<<"\nPersona "<<i+1<<"\nInserire il nome ";
  49.          cin>>v[i].nome;
  50.          cout<<"Inserire l' eta' ";
  51.          cin>>v[i].eta;
  52.          
  53. }
  54.  
  55. }
  56.  
  57.  
  58. void stampa_vett(const vettore v, int riemp)
  59. {
  60.      int i;
  61.      
  62.     cout<<"elementi della struttura"<<endl;
  63.      
  64.     for(i=0;i<riemp;i++)
  65.     {
  66.                         cout<<"\nPersona"<<i+1<<":\nNome:";
  67.                         cout<<v[i].nome;
  68.                         cout<<"\neta' : "<<v[i].eta;
  69.     }
  70.     cout<<endl;
  71.      
  72. }



Ultima modifica effettuata da Poggi Marco il 01/02/2010 alle 22:30


Nulla va più veloce della luce, quindi rilassati.
PM Quote