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 collegare nome ad un elemento della struttura?
Forum - C/C++ - Come collegare nome ad un elemento della struttura?

Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 21:59
Martedì, 24/12/2013
Ho creato una struct e vorrei far si che: se un elemento della struttura è uguale a una scritta data in input allora accade una determinata cosa.
Esempio:


Codice sorgente - presumibilmente C/C++

  1. struct esempio{
  2. char scritta[32];
  3. }
  4.  
  5. cin >> scritta[32];
  6.  
  7. n = 0;
  8.  
  9. if (scritta[32] == 'ciao'){
  10. n = 10;
  11. }



Perchè in quell' if mi da l'errore?

Il codice non è scritto perfettamente, lo so, ma è per dare l'idea!

Grazie...

Ultima modifica effettuata da rob il 24/12/2013 alle 22:01
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 23:00
Martedì, 24/12/2013
Ciao!

Una struct è un tipo di dato. Di conseguleza non puoi scrivere direttamente  l' istruzione cin >> scritta[32] ;
Devi dichiarare un' istanza di esempio, a cui accedere a scritta.

Nell' if, la notazione è sbagliata: indichi la stringa ciao tra singoli apici, come se fosse un singolo carattere.
Per il confronto delle stringhe ci sono le apposite funzioni: http://www.cplusplus.com/reference/cstring/?kw=string.h

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:58
Mercoledì, 25/12/2013
Aggiungo che, dato che scrivi in C++, non ha senso usare gli array di char del C per le stringhe.

Utilizza gli oggetti di classe string e potrai anche fare a meno delle funzioni di confronto delle stringhe del C.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 12:36
Giovedì, 26/12/2013
Non ho capito... non ho trovato niente da nessuna parte!

in poche parole se un nome dato in input è uguale a un altro che si trova in una struct allora succede qualcosa... tipo (più semplicemente):

Codice sorgente - presumibilmente C/C++

  1. if (Info[10].lavoratore == nome){
  2.  
  3. [...]
  4.  
  5. }



dove nome e Info[10].lavoratore sono variabili di tipo char

8-|

Ultima modifica effettuata da rob il 26/12/2013 alle 12:37
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:45
Giovedì, 26/12/2013
Testo quotato

Postato originariamente da rob:
non ho trovato niente da nessuna parte!
  



Questo è impossibile.

Il problema è che tu non hai idea delle basi minime del linguaggio e per questo fai un bel po' di confusione.

Tutta questa roba sta nei primi capitoli di un libro di C/C++ quindi è da quei capitoli che dovresti iniziare.

Quando scrivi Info[10] ti stai riferendo ad un vettore di strutture (all'elemento 10).
Il campo lavoratore e nome non possono essere char ma array di char.
Se sono array di char, come ti è stato detto, NON puoi usare == ma devi utilizzare la funzione strcmp
Se stai lavorando in C++ non ha senso usare gli array di char, ma come detto, utilizza le string


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 13:55
Giovedì, 26/12/2013
Perfetto!
Grazie ;)

PM Quote