[C++]Media alunni

di il
7 risposte

[C++]Media alunni

Dato un elenco di n alunni, inserire nome, età e calcolare la media della loro età
Ecco sembra una traccia banale... ma quando mi sono trovato a fare i calcoli con gli array mi sono accorto di non saperlo fare
mi sono bloccato al calcolo della media, finora ho svolto l'80% dell'esercizio:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
    int somma = 0,media = 0,n; //il compilatore che uso "Xcode" mi ha chiesto di porre valore zero a somma e media anche se non ho capito la motivazione...
    char età[n],nome[n];
    cout << "Di quanti alunni e' composta la classe?\n";
    cin >> n;
    for(n=0;(n<=true);n++)
    {
    cout << "Nome: ";
    cin >> nome[0];
    cout << "Eta': ";
    cin >> età[0];
    }
    for (int i=0; i<n; i++)//ciclo for per calcolare la media in array(non ho trovato di meglio sul web)
    {
        
        somma=somma + età[n];
        media=somma/n;
    }
    
    cout << "La media dell'eta' degli alunni e': ";
    cout << media;
    return 0;
}
Per la mia inesperienza è un rompicapo dato che sto imparando C++ da circa 2 settimane

7 Risposte

  • Re: [C++]Media alunni

    Se definisci
    char età[n]
    n deve essere valorizzato altrimenti quale sarà la dimensione?
    (suggerimento: evita caratteri con accenti...)
    Suggerisco di utilizzare una costante del tipo
    #define MAX_ALUNNI 100
    e dichiarare quindi
    char eta[MAX_ALUNNI]
    Poi, chiedi di inserire n che è il numero di alunni facendo poi
    for(n=0;(n<=true);n++)
    se usi n come variabile del ciclo ne perdi il valore iniziale inputato dall'utente; dovresti fare
    for(i=0;i<n;i++)
    Infine
    cin >> età[0];
    Questo richiede l'inserimento da tastiera e il caricamento in eta[0]... secondo te è corretto caricare tutto nel primo elemento dell'array?
  • Re: [C++]Media alunni

    Il fatto e che volevo che i dati di ogni alunno fosse salvato in ogni cella, ad esempio

    Array 1:
    nome=alunno1
    età: età1
    Array 2:
    nome=alunno2
    età: età2

    e così via
    Comunque hai ragione sul fatto degli accenti, in futuro eviterò di mettere nel programma variabili con l'accento.
  • Re: [C++]Media alunni

    Mai pensato di utilizzare una struct o una classe?
    Potrebbe renderti tutto molto più comodo...
  • Re: [C++]Media alunni

    il fatto e che volevo che i dati di ogni alunno fosse salvato in ogni cella
    Appunto, perchè salvi tutto alla posizione [0]???
  • Re: [C++]Media alunni

    Riguardo alle classi si ci ho pensato ma poi rendo il programma più grande di quello che dovrebbe essere, quindi la soluzione degli array mi sembra molto più semplice
    Poi ho pensato di creare una funzione per fare la media.
    Non ho capito come inserire ciascun alunno in ciascun array:

    Ho riscritto il programma in base ai vostri consigli, ma resta il problema della media e non capisco perché non va
    #include <iostream>
    using namespace std;
    int main(int argc, const char * argv[])
    {
        int somma = 0,media = 0,max_alunni=100,e=0; //il compilatore che uso "Xcode" mi ha chiesto di porre valore zero a somma e media anche se non ho capito la motivazione...
        char eta[100],nome[100];
        cout << "Di quanti alunni e' composta la classe?\n";
        cin >> max_alunni;
        for(max_alunni=0;(max_alunni<=true);max_alunni++)
        {
            cout << "Nome: ";
            cin >> nome[max_alunni];
            cout << "Eta': ";
            cin >> eta[e];
        }
        for (int i=0; i<max_alunni; i++)//ciclo for per calcolare la media in array(non ho trovato di meglio sul web)
        {
            
            somma=somma + eta[max_alunni];
            media=somma/max_alunni;
        }
        
        cout << "La media dell'eta' degli alunni e': ";
        cout << media;
        return 0;
    }
  • Re: [C++]Media alunni

    non sono sicuro di aver capito bene come funziona il programma
    In realtà non hai capito come funzionano gli array
    Parti da un problema più semplice: fai inserire solo le età e ne calcoli la media.
    Questa è la traccia che potresti seguire:
    - dichiari un array di interi chiamato eta[] di dimensione MAX_ALUNNI
    - dichiari un intero chiamato n che vale inizialmente 0
    - dichiari un intero chiamato media che vale inizialmente 0
    - fai un ciclo per l'inserimento di tutte le eta, una per una, ciascuna nella propria 'cella' (e non tutti in eta[0]!!!!)
    - ad ogni inserimento incrementi n
    - esci dal ciclo quando l'utente inserisce 0 oppure (n==MAX_ALUNNI)
    - stampa il valore di n
    - stampa il contenuto di eta[] (facendo un ciclo da 0 a n-1)
    - media = 0
    - fai un ciclo da 0 a n-1 per sommare in media tutti i valori di eta[]
    - se n > 0 fai media=media/n
    - stampi media
    Intanto fai questo, poi nominativi, strutture e classi vengono dopo
  • Re: [C++]Media alunni

    Capito... e pensare che la facevo così facile
Devi accedere o registrarti per scrivere nel forum
7 risposte