Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    17

    Problema con le Strutture (struct) C++

    Salve a tutti.
    Sono nuova nel forum e alle primissime armi con la programmazione.
    Sto riscontrando problemi nella costruzione di strutture dati in C++. Volevo realizzare un banale programma che inserisca in input il nome e il cognome di uno studente.

    Questo è il codice:
    codice:
    struct studente {
        char nome;
        char cognome;
        int voti[5];
    };
    
    
    studente set_nome(studente x) {
        cout << "Inserire il nome dello studente: ";
        cin >> x.nome;
        return x;
    }
    
    
    studente set_cognome(studente y) {
        cout << "Inserire il cognome dello studente: ";
        cin >> y.cognome;
        return y;
    }
    
    
    int main() {
        studente x, y;
        set_nome(x);
        set_cognome(y);
        return 0;
    }
    Il programma non mi da errore, l'unico problema è che una volta inserito il nome, non mi permette di inserire il cognome.
    Ho provato anche ad inserire un array con i voti dello studente in maniera tale da poter calcolarne la media e stamparla a video. Avevo provato a scrivere così:
    codice:
    struct studente {
        char nome;
        char cognome;
        int voti[5];
    };
    
    studente set_voti(studente v) {
        cout << "Inserire i voti dello studente: ";
        for (int i=0; i<5; i++) {
            cin >> v.voti[i];
        }
        return v;
    }
    Il problema è che non riesco ad inserire i voti e mi compare immediatamente l'errore.
    Spero di essere stata abbastanza chiara.
    Grazie in anticipo.
    Ultima modifica di MItaly; 05-06-2015 a 10:49 Motivo: Aggiunti tag [CODE]

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    char è un tipo di dato semplice non complesso e riesce a contenere valori compresi tra -128 e 127. Tu hai bisogno di un insieme di char che prende il nome di vettore o se preferisci array.Quindi nome e cognome per il loro significato e presumo per il contesto in cui sono devono essere corretti pena una violazione di memoria
    Ultima modifica di linoma; 05-06-2015 a 11:00
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    17
    Grazie. Adesso ho provato a scrivere così:

    codice:
    struct studente {
        char nome[];
        char cognome[];
        int voti[5];
    };
    
    
    studente set_nome(studente x) {
        cout << "Inserire il nome dello studente: ";
        cin >> x.nome;
        return x;
    }
    
    
    studente set_cognome(studente y) {
        cout << "Inserire il cognome dello studente: ";
        cin >> y.cognome;
        return y;
    }
    
    
    studente set_voti(studente v) {
        cout << "Inserire i voti dello studente: ";
        for (int i=0; i<5; i++) {
            cin >> v.voti[i];
        }
        return v;
    }
    
    
    studente media(studente m) {
        int tmp=0;
        for (int j=0; j<5; j++) {
            tmp=(tmp+m.voti[j])/5;
        }
        cout << "La media dei voti è: " << tmp;
        return m;
    }

    Riesco ad inserire senza problemi i dati che mi servono. L'unico problema che sto riscontrando in questo momento è il calcolo della media. Non credo di averla strutturata nel modo giusto perché mi esce un numero che troppo grande.
    Ultima modifica di LeleFT; 05-06-2015 a 12:37 Motivo: Aggiunti i tag CODE

  4. #4
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    prova a cambiarechar nome[]; in char nome[127];e la media è data dalla sommatoria da 0 ad n diviso il numero n
    Per gli Spartani e Sparta usa spartan Il mio github

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    @GhL: quando posti del codice, inseriscilo all'interno degli appositi tag [CODE] .. [/CODE] così da mantenerne indentazione e formattazione, rendendolo quindi più leggibile.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    17
    La parte del nome l'ho risolta. Non riesco ad inserire i dati nell'array. Ho fatto un ciclo che mi prende i voti, ma se provo a stampare per vedere cosa esce il risultato è questo "0x28feb4". Cosa vuol dire?
    Credo sia questo il motivo per cui non riesco a calcolare la media.

  7. #7
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    mica usi un pentium cn la fdiv errata?
    Per gli Spartani e Sparta usa spartan Il mio github

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    17
    Sono abbastanza ignorante in campo, ma facendo al volo delle ricerche per capire cosa fosse non credo di avere un pentium con la div errata. Spero. In altri programmi inserire i dati dell'array non era mai stato un problema. Provo a riscrivere tutto da capo e vedo che succede

  9. #9
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    era un ipotesi se nn si era capito, visto l'enorme valore
    Per gli Spartani e Sparta usa spartan Il mio github

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    17
    Ho riscritto questa parte del codice. Quando mi chiede di inserire i voti ho inserito "6, 4, 6, 3, 6" mentre nell'output mi esce "Voti: 1966281102". La media, invece, mi esce così: "Media: 284527"


    codice:
    struct studente {	int voti[5];
    };
    
    
    studente set_voti(studente v) {
    	for (int i=0; i<5; i++) {
    		cin >> v.voti[i];
    	}
    	cout << "Voti:"  << v.voti[5] << '\n';
    	return v;
    }
    
    
    studente calcola_media(studente m) {
    	int media=0;
    	for (int j=0; j<5; j++) {
    		media=(media+m.voti[j])/5;
    	}
    	cout << "Media: " << media;
    	return m;
    }
    
    
    int main() {
    	studente f, n;
    	set_voti(f);
    	calcola_media(n);
    	return 0;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.