Aiutatemi a Capire struct e typedef :(

di il
7 risposte

Aiutatemi a Capire struct e typedef :(

Sto cercando di fare un esercizio con il costrutto struct e typedef ed essendo la prima volta che li uso ho guardato un po' in giro anche su youtube. Da tutti i video che ho visto il mio codice risulterebbe essere "corretto" ma in fase di compilazione mi da errore.Il codice è questo se sapete dirmi qualcosa mi fareste un piacere. (È il mio primo post su questo forum e non sono un informatico faccio due ore di informatica settimanali al liceo e quello che so cerco di studiarlo da solo quindi siate clementi )
#include <iostream>

using namespace std;
typedef struct{
    int eta;
    char sesso;
}persona;


int main()
{
    int riemp,x;
    char S;
    cout << "Inserisci Riemp\t";
    cin>>riemp;
    persona VS[100];
    for(int i=0;i<riemp;i++)
    {
        cout<<"Inserisci l'eta' del soggetto numero "<<i<<"\t";
        cin>>VS.eta[i];
        cout<<"Inserisci il sesso del soggetto numero "<<i<<"\t";
        cin>>VS.sesso[i];
    }

    return 0;
}

7 Risposte

  • Re: Aiutatemi a Capire struct e typedef :(

    Il compilatore oltre a darti errore ti dice dove e cosa… È molto importante imparare a capirli

    In particolare gli errori sono: [CODE] prog.cc: In function 'int main()': prog.cc:20:17: error: request for member 'eta' in 'VS', which is of non-class type 'persona [100]' 20 | cin>>VS.eta[i]; | ^~~ prog.cc:22:17: error: request for member 'sesso' in 'VS', which is of non-class type 'persona [100]' 22 | cin>>VS.sesso[i]; | ^~~~~ prog.cc:12:15: warning: unused variable 'x' [-Wunused-variable] 12 | int riemp,x; | ^ prog.cc:13:10: warning: unused variable 'S' [-Wunused-variable] 13 | char S; | ^ Dove gli ultimi due sono solo avvertimenti per variabili non usate (x ed S).
    In particolare i primi due ti dicono che stai accedendo a “eta” e “sesso” da un array. Questo perché usi l’operatore [] sul campo e non sull’array VS.

    Lascia stare typedef, in C++ una struttura diventa tipo da sola. Dà il nome alla struttura, senza typedef e sei apposto
  • Re: Aiutatemi a Capire struct e typedef :(

    _Achille ha scritto:


    Il compilatore oltre a darti errore ti dice dove e cosa… È molto importante imparare a capirli

    In particolare gli errori sono: [CODE] prog.cc: In function 'int main()': prog.cc:20:17: error: request for member 'eta' in 'VS', which is of non-class type 'persona [100]' 20 | cin>>VS.eta[i]; | ^~~ prog.cc:22:17: error: request for member 'sesso' in 'VS', which is of non-class type 'persona [100]' 22 | cin>>VS.sesso[i]; | ^~~~~ prog.cc:12:15: warning: unused variable 'x' [-Wunused-variable] 12 | int riemp,x; | ^ prog.cc:13:10: warning: unused variable 'S' [-Wunused-variable] 13 | char S; | ^ Dove gli ultimi due sono solo avvertimenti per variabili non usate (x ed S).
    In particolare i primi due ti dicono che stai accedendo a “eta” e “sesso” da un array. Questo perché usi l’operatore [] sul campo e non sull’array VS.

    Lascia stare typedef, in C++ una struttura diventa tipo da sola. Dà il nome alla struttura, senza typedef e sei apposto
    Le variabili inutilizzate le avevo dichiarate per tentare di prendere nel cin i valori delle variabili stesse per poi fare un assegnamento e "spostarle sul vettore ".Cosa intendi di preciso per "campo?" .Mentre aspettavo risposte ho cercato di modificare il codice e ora mi da un errore "expected primary expression before ' . ' token " [CODE] #include <iostream> using namespace std; typedef struct persona{ int eta; char sesso; }VS[100]; int main() { int riemp,x; char S; cout << "Inserisci Riemp\t"; cin>>riemp; for(int i=0;i<riemp;i++) { cout<<"Inserisci l'eta' del soggetto numero "<<i<<"\t"; cin>>VS.eta[i] ; cout<<"Inserisci il sesso del soggetto numero "<<i<<"\t"; cin>>VS.sesso[i]; } return 0; }
  • Re: Aiutatemi a Capire struct e typedef :(

    L'array è VS, quindi VS[ i ].eta come ti ha detto. Anche se non hai tempo, comunque le basi le devi fare su un libro o al massimo su delle dispense serie, non su YouTube. Altrimenti non capisci nemmeno i suggerimenti di base
  • Re: Aiutatemi a Capire struct e typedef :(

    Concordo con Weierstrass

    Le variabili inutilizzate, se inutilizzate appunto, eliminale. Meno cose hai, meglio è.

    Comunque io ti ho detto di
    -eliminare il typedef. Se vuoi imparare C, usa C.
    -utilizzare l’operatore [] sull’array e non sui campi (campo, attributo ecc… chiamalo come vuoi)
    E in tutto ciò hai solo reso VS un array globale…

    Quando hai risolto considera anche di validare il numero di elementi, che deve essere compreso tra 1 e 100
  • Re: Aiutatemi a Capire struct e typedef :(

    Weierstrass ha scritto:


    L'array è VS, quindi VS[ i ].eta come ti ha detto. Anche se non hai tempo, comunque le basi le devi fare su un libro o al massimo su delle dispense serie, non su YouTube. Altrimenti non capisci nemmeno i suggerimenti di base
    Sono pienamente consapevole del fatto che devo porre delle basi alla mia conoscenza ma sono anche consapevole di non aver idea di dove iniziare. Di libri ce ne sono a migliaia non avendo già conoscenze molto sviluppate è anche difficile riuscire a capire quale si adatta alle mie esigenze. Comunque son riuscito a fare l'inserimento grazie ai vostri consigli penso che ormai questo forum sarà una tappa fissa perché ciò che cerco è anche qualcuno capace di insegnarmi .
  • Re: Aiutatemi a Capire struct e typedef :(

    Magari il Deitel&Deitel e probabilmente non da solo ma con un aiuto in presenza, un collega più esperto, un corso, un professore ...
  • Re: Aiutatemi a Capire struct e typedef :(

    Nel caso dai un'occhiata qui:
    http://www-old.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/01Indice.html
    Mi sembra un corso davvero ben fatto!
Devi accedere o registrarti per scrivere nel forum
7 risposte