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++ - Aggiornamento valori in Struct
Forum - C/C++ - Aggiornamento valori in Struct

Avatar
__BlackworM__ (Member)
Pro


Messaggi: 110
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 16:58
Martedì, 08/02/2011
Come da titolo, devo aggiornare dai campi di una struct la cui struttura è la seguente:
Codice sorgente - presumibilmente C++

  1. typedef struct alunno
  2. {
  3. char nome[100];
  4. char cognome[100];
  5. int matricola[3];
  6. char dataNascita[15];
  7. char luogoNascita[50];
  8. int presenze[2];
  9. int assenze[2];
  10. struct indirizzo {
  11.                     char via[100];
  12.                     int cap[8];
  13.                     int civico[5];
  14.                  } indirizzo;
  15. } alunno;



in pratica voglio aggiornare i campi assenze e presenze incrementandole di 1.

Le procedure che ho creato sono banalissime, cioè :
Codice sorgente - presumibilmente C/C++

  1. void presenza(int studente) { *classe[studente].presenze+1; }
  2. void assenza (int studente) { *classe[studente].assenze+1; }



in pratica alle funzioni passo un int che rappresenta l'utente(perchè gli utenti sono in un tipo array struct quindi ognuno ha un indice) e vado ad inserire nel campo assenze o presenze il suo valore +1.
In tutto ciò però non mi incrementa niente, mi potete aiutare ?

Da premettere che il programma errori non ne dà in fase di compilazione, ma probabilmente l'errore è di semantica, ho letto da qualche parte che la colpa probabilmente è dei puntatori.

Grazie in anticipo


PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
4
Down
V
Segnala al moderatore
Postato alle 17:12
Martedì, 08/02/2011
per incrementare devi scrivere
a = a + 1

tu hai scritto

a + 1

che è un'espressione valida il cui valore non viene memorizzato da nessuna parte

Un'altra cosa... assenze e presenze li hai dichiarati come vettori, e ciò non ha senso. int a[2] non significa "un intero a due cifre", ma significa "un vettori di 2 interi".

Ultima modifica effettuata da TheKaneB il 08/02/2011 alle 17:14
Ma per dichiarare un valore massimo alle stringhe va bene, mentre per gli int no giusto ? - __BlackworM__ - 08/02/11 17:28
Ok, grazie per la delucidazione sulla dichiarazione del vettore, anziche singola variabile, poi questo codice void presenza(int studente) { *classe[studente].presenze+1; } l'ho cambiato in questo void presenza(int studente) { classe[studente].presenze+=1; } ed adesso incrementa. Grazie - __BlackworM__ - 08/02/11 17:49
PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
0
Down
V
Segnala al moderatore
Postato alle 18:05
Martedì, 08/02/2011
che strano che il compilatore non dia nemmeno un warning....dovrebbe dare almeno un statement with no effect....

Niente di niente ! uso Code::Blocks - __BlackworM__ - 08/02/11 18:27
PM