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++ - Come aggiornare gli elementi di una struct?
Forum - C/C++ - Come aggiornare gli elementi di una struct?

Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 20:59
Venerdì, 14/02/2014
Salve

Se per esempio avessi una struttura del tipo:

Codice sorgente - presumibilmente C++

  1. struct operaio{
  2. char nome[32];
  3. char cognome[32];
  4. int anni;
  5. };



Dopo averla inserita N volte viene chiesto all'utente se vuole inserire altre Z volte la struttura con la seguente condizione: Se il nome e il cognome sono uguali bisogna aggiornare solo l'età, in caso contrario aggiungere la nuova struttura (dell'elenco Z) all'elenco iniziale (N). Infine, ovviamente, stamparla.

E' un esempio stupido ma ci sto sbattendo la testa da giorni XD
Grazie a tutti...

Ultima modifica effettuata da rob il 14/02/2014 alle 21:04
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 21:11
Venerdì, 14/02/2014
Ciao!

Dove incontri difficoltà? Le strutture sono memorizzate in modo statico, dinamico,su file... ?
Per la stampa, bisogna implementare una funzione?

PM Quote
Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 21:35
Venerdì, 14/02/2014
Le strutture vengono memorizzate in modo statico e riguardo la stampa la riesco a fare senza problemi.
Ecco il programma:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #define nmax 100
  3.  
  4. using namespace std;
  5.  
  6. struct operaio{
  7.         char nome[32];
  8.         char cognome[32];
  9.         int anno;
  10. };
  11.  
  12. void lettura(int &N, operaio x[]){
  13.         for (int i = 0; i<N; i++){
  14.                 cout << "Nome: "; cin >> x[i].nome;
  15.                 cout << "Cognome: "; cin >> x[i].cognome;
  16.                 cout << "Anno: "; cin >> x[i].anno;
  17.         }
  18. }
  19.  
  20. int main(){
  21.         int N, Z;
  22.         operaio x[nmax];
  23.  
  24.         cout << "Quanti operai vuoi inserire? "; cin >> N;
  25.         lettura(N, x);
  26.  
  27.         cout << "Quanti altri operai inserire? "; cin >> Z;
  28.         lettura(Z, x); //qui: se il nome e il cognome sono uguali alla lettura precedente allora aggiorna, altrimenti aggiungi un nuovo operaio...
  29.  
  30.         cout << "Elenco finale:";
  31.  
  32.         return 0;
  33. }


Ultima modifica effettuata da rob il 14/02/2014 alle 21:36
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 22:01
Venerdì, 14/02/2014
Alla funzione lettura, devi implementare un ciclo di controllo ( per verificare se si è già inserito il nominativo ).
Quindi e necessario aggiungere un parametro che indichi alla funzione quanti record controllare.
Ti consiglio di memorizzare i dati su una istanza di operaio locale, per poi eventualmente, inserirla nel vettore.

PM Quote
Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 23:17
Venerdì, 14/02/2014
Ok, credo di aver capito. Grazie :)

PM Quote
Avatar
Krackel (Normal User)
Newbie


Messaggi: 3
Iscritto: 15/02/2014

Segnala al moderatore
Postato alle 20:56
Sabato, 15/02/2014
Testo quotato

Postato originariamente da rob:

  



Bisogna stamparla solamente oppure devi anche effettuare l'ordinamento della lista?

PM Quote
Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 19:19
Lunedì, 17/02/2014
Ordinarla :)

PM Quote