Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    [c++] conta studenti di ogni classe

    buongiorno a tutti..
    sto provando ed eseguire un esercizio però trovo diversi problemi nell'affrontarlo, premetto che l'insegnante non ha nemmeno spiegato gli array però da quanto ho capito guardando qui e li varie guide questo esercizio dovrei svolgerlo con gli array.

    così chiedo aiuto a voi

    l'esercizio dice: c'è un elenco scolastico in cui ci sono nomi degli alunni e le loro rispettive classi. si vuole contare gli studenti di ogni classe. sapendo che le classi sono 5 (la sezione non è richiesta e nemmeno l'anno)

    allora io ho fatto così fino ad ora però sono bloccato perchè non saprei come andare avanti inoltre ciò che ho fatto mi sa tanto che è sbagliato.

    vorrei che qualcuno mi desse qualche consiglio su magari come procedere, sicuramente ho sbagliato a priori la logica con cui affrontare l'esercizio perchè lo sento che c'è qualcosa che è sbagliato così vi chiedo una mano

    codice:
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
        string alunno,classe1[20];
        char scelta;
        int n=0;
        cout<<"premere 1 per inserire gli alunni della prima classe"<<endl<<"premere 2 per inserire gli alunni della seconda classe"<<endl<<"premere 3 per inserire gli alunni della terza classe"<<endl<<"premere 4 per inserire gli alunni della quarta classe"<<endl<<"premere 5 per inserire gli alunni della quinta classe"<<endl<<"premere 6 per terminare"<<endl;
        cin>>scelta;
        do{
        switch(scelta)
        {
                      case '1':
                           cout<<"quanti alunni vuoi inserire nella prima classe?"<<endl;
                           cin>>n;
                           for(int i=0;i<n;i++)
                           {
                                   cout<<"inserisci l'alunno "<<i+1<<endl;
                                   cin>>classe1[i];
                                   alunno=classe1[i]+alunno;
                           }
                           break;
                      case '2':
                           cout<<"quanti alunni vuoi inserire nella seconda classe?"<<endl;
                           break;
                      case '6':
                           system("pause");
                           return 0;
                           break;
        }
        }while(scelta!=6);
        cout<<alunno<<endl;  
        system("pause");
        return 0;
    }

    gli errori sono: se premo 6 esce dal programma, ok, ma se io premo 1 per esempio e compilo i primi alunni appena ho terminato il progrmama mi richiede di compilare gli alunni sempre della stessa classe.
    se premo 2 invece mi stampa a video infinite volte la scritta nel case 2
    infine gli alunni stampati ( cout<<alunno<<endl; ) me li stampa a video in ordine decrescente e senza spazi mentre io vorrei che magari me li stampasse con gli spazi ma comunque dell'ordine non mi interessa... cioè io alla fine dovrei riuscire a contarli questi alunni come li posso contare? anche la grandezza del vettore non saprei quale mettere una vale l'altra?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ho rifatto un pò il codice spremendomi un pò le meningi diciamo che questa mi sembra una strada più corretta... però mi va in crash mi inserisce gli studenti della I classe ma a metà inserimento di quelli di II mi crasha.

    codice:
    #include<iostream>
    using namespace std;
    int main()
    {
        char alunno[20];
        int n=0,count=0,scelta,tot_prima=0,tot_seconda=0,tot_terza=0,tot_quarta=0,tot_quinta=0;
        do
        {
        cout<<"premere 1 per inserire alunni di I"<<endl<<"premere 2 per inserire alunni di II"<<endl<<"premere 3 per inserire alunni di III"<<endl<<"premere 4 per inserire alunni di IV"<<endl<<"premere 5 per inserire alunni di V"<<endl<<"premere 6 per fermare l'inserimento"<<endl;
        cin>>scelta;
        switch(scelta)
        {
                      case 1:
        cout<<"inserisci il numero degli alunni"<<endl;
        cin>>n;
        for(int i=0;i<n;i++)
        {
                cout<<"inserisci il nome dell alunno "<<i+1<<endl;
                cin>>alunno;
                count++;
        }
        tot_prima=count;
        count=0;
        break;
        case 2:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int i=0;i<n;i++)
             {
                     cout<<"inserisci il nome dell alunno "<<i+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_seconda=count;
             count=0;
             break;
        case 3:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int a=0;a<n;a++)
             {
                     cout<<"inserisci il nome dell alunno "<<a+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_terza=count;
             count=0;
             break;
                 case 4:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int e=0;e<n;e++)
             {
                     cout<<"inserisci il nome dell alunno "<<e+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_quarta=count;
             count=0;
             break;  
                 case 5:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int f=0;f<n;f++)
             {
                     cout<<"inserisci il nome dell alunno "<<f+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_quinta=count;
             count=0;
             break;
                 case 6:
             break;
    }
    }while(scelta!=6);
    
        cout<<"gli alunni di prima sono: "<<tot_prima<<endl;
        system("pause");
        return 0;
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ah no risolto...

  4. #4
    Però la consegna non chiede che l'utente debba inserire gli studenti.
    quindi secondo me dovresti semplicemente fare una funzione che crea tutte le classi e gli studenti, e POI chiedere all'utente la classe per la quale desidera visualizzare il numero di studenti

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    il testo è questo: si dispone di un elenco degli studenti di una scuola che riporta per ciascuno di essi il nome e la classe frequentata. l'elenco è ordinato per classi. costruisci un programma che conti gli studenti di ogni classe. (per classe si intende l'anno di corso frequentato: 1, 2, 3, 4, 5 e non la sezione. non è noto a priori quante e quali siano le classi presenti nella scuola)

    dici che come l'ho fatto io è errato?

    io ho fatto così:

    codice:
    #include<iostream>
    using namespace std;
    int main()
    {
        char alunno[20];
        int n=0,count=0,scelta,tot_prima=0,tot_seconda=0,tot_terza=0,tot_quarta=0,tot_quinta=0,tot=0;
        do
        {
        cout<<"premere 1 per inserire alunni di I"<<endl<<"premere 2 per inserire alunni di II"<<endl<<"premere 3 per inserire alunni di III"<<endl<<"premere 4 per inserire alunni di IV"<<endl<<"premere 5 per inserire alunni di V"<<endl<<"premere 6 per fermare l'inserimento"<<endl;
        cin>>scelta;
        switch(scelta)
        {
                      case 1:
        cout<<"inserisci il numero degli alunni"<<endl;
        cin>>n;
        for(int i=0;i<n;i++)
        {
                cout<<"inserisci il nome dell alunno "<<i+1<<endl;
                cin>>alunno;
                count++;
        }
        tot_prima=count;
        count=0;
        break;
        case 2:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int o=0;o<n;o++)
             {
                     cout<<"inserisci il nome dell alunno "<<o+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_seconda=count;
             count=0;
             break;
        case 3:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int a=0;a<n;a++)
             {
                     cout<<"inserisci il nome dell alunno "<<a+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_terza=count;
             count=0;
             break;
                 case 4:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int e=0;e<n;e++)
             {
                     cout<<"inserisci il nome dell alunno "<<e+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_quarta=count;
             count=0;
             break;  
                 case 5:
             cout<<"inserisci il numero degli alunni"<<endl;
             cin>>n;
             for(int f=0;f<n;f++)
             {
                     cout<<"inserisci il nome dell alunno "<<f+1<<endl;
                     cin>>alunno;
                     count++;
             }
             tot_quinta=count;
             count=0;
             break;
                 case 6:
             break;
    }
    }while(scelta!=6);
        cout<<"gli alunni di I sono: "<<tot_prima<<endl;
        cout<<"gli alunni di II sono: "<<tot_seconda<<endl;
        cout<<"gli alunni di III sono: "<<tot_terza<<endl;
        cout<<"gli alunni di IV sono: "<<tot_quarta<<endl;
        cout<<"gli alunni di V sono: "<<tot_quinta<<endl;
        tot=tot_prima+tot_seconda+tot_terza+tot_quarta+tot_quinta;
        cout<<endl<<"in totale sono presenti "<<tot<<" alunni nella scuola"<<endl;
        system("pause");
        return 0;
    }

  6. #6
    Quote Originariamente inviata da passasooz Visualizza il messaggio
    dici che come l'ho fatto io è errato?
    Secondo me sì....così è troppo facile.
    In pratica sei tu che gli passi i valori delle persone in una classe, e non credo la prof. intedesse questo.
    Avete studiato gli oggetti?
    Se si allora proverei a creare una classe Studente che abbia come attributo il nominativo e la classe frequentante creerei un po di oggetti Studente nel main e li inserirei nell'array da te creato studenti e poi nella classe di ricerca passerei l'array e implementerei la funzione di ricerca.
    Almeno io farei così.

    Ciao
    Ultima modifica di schumy2000; 07-01-2014 a 18:28
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    Dato che la ricerca è per classe è più diretto fare l'opposto: ovvero creare un oggetto classe_scolastica che contiene : la sezione, l'anno (1 2 3 4 5) ed il numero di studenti.
    Edit:
    non sono stato chiaro, ma sezione ed anno possono essere condensati in un'unica stringa
    codice:
    struct Classe_Scolastica
    {
       int num_studenti;
       std::string nome;  //es: 1A.       //...o addirittura può essere semplicemente un char[2]
    };
    const int numero_sezioni = 4;
    int main()
    {
       Classe_Scolastica scuola[numero_sezioni*5];
         //inizializzi il tuo array
    
         //chiedi in input il nome di una classe
    
         //cerchi in scuola l'elemento con il nome inserito dall'utente
    
         //se lo trovi gli stampi il numero degli studenti, altrimenti dai il messaggio di errore (esempio: quella classe non esiste)
    }
    Ultima modifica di MegaAlchimista; 07-01-2014 a 18:50

  8. #8
    Cmq l'esercizio parla di:
    "si dispone di un elenco degli studenti di una scuola che riporta per ciascuno di essi il nome e la classe frequentata..."
    quindi credo che la soluzione che più si adatti sia quella di creare lo studente.

    Poi anche nel tuo caso non deve far altro che leggere il valore nell'oggetto, cosa molto facile.
    Secondo me la prof. vuole far sforzare lo studente a cercare all'interno di un array i valori non nulli.
    Ultima modifica di schumy2000; 07-01-2014 a 18:50
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    vi spiego la situazione: la prof nemmeno ha spiegato gli array... gli oggetti non li abbiamo studiati.
    mi sono andato a guardare la spiegazione degli array sulla guida del sito di cplusplus e basta

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    gli oggetti non li ha spiegati... sennò usavo l'oggetto studente che passava nome e classe int studente(nome,classe)...... ma non li ha spiegati gli oggetti

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.