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

    [c++] completamento punti 3, 5 e 6

    buongiorno,

    sono completamente bloccato e siete gli unici a cui mi viene da chiedere qualcosa...

    ora vi posto tutto l'esercizio e vi posto ciò che ho svolto per ora,
    mi sapreste aiutare a terminarlo?

    il testo:

    Si vuole scrivere un programma C++ per la gestione di informazioni relative a N studenti neolaureati in
    ingegneria. Ogni studente è caratterizzato dalle seguenti informazioni:
    - Cognome stringa contenuta in campo di esattamente 25 caratteri, può contenere spazi
    - Nome stringa contenuta in campo di esattamente 25 caratteri, può contenere spazi
    - corso di laurea può assumere i seguenti valori: Informatica, Elettronica, Civile, Meccanica,
    Elettrica, Gestionale
    - voto di laurea intero, indica il voto di laurea
    - lode intero, 1 indica la presenza di lode, 0 indica l’assenza
    - numero anni di iscrizione intero, indica in quanti anni lo studente ha conseguito la laurea
    Dopo aver definito le strutture dati opportune, scrivere un menù che permetta le seguenti operazioni:
    1) Inserimento dati di tutti gli N studenti
    2) Ordinamento alfabetico rispetto al cognome. A parità di cognome, ordinare rispetto al
    nome
    3) Ricerca e stampa degli studenti migliori Acquisito un voto soglia e un numero anni soglia
    (valori rispetto ai quali effettuare la ricerca), visualizzare cognome, nome e voto di laurea
    degli studenti aventi un voto maggiore o uguale a voto soglia ed un numero di anni di
    iscrizione inferiore ad anni soglia.
    4) Valutazioni massime per corso di laurea Acquisito il corso di laurea, visualizzare il
    numero di studenti aventi un voto pari a 110 o 110 e lode.
    5) Media per corso di laurea Acquisito il corso di laurea, calcolo della media del voto di
    laurea (nota: ai fini del calcolo della media il 110 e lode si consideri pari a 110).Visualizzare
    a video il risultato.
    6) Per ogni corso di laurea, ordinamento rispetto al voto (decrescente)

    il codice:


    codice:
    #include <cstring>
    #include <iostream>
    using namespace std;
    int main()
    {
        int n_stud,scelta,j,a,b;
        char temp[25],c_laurea[11];
        struct studente
        {
               char nome[25],cognome[25],corso[11];
               int voto,lode,anni_iscr;
        };
        cout<<"inserisci il numero di studenti neolaureati\n";
        cin>>n_stud;
        studente tot_stud[n_stud];
        do{
        cout<<"per inserire i dati di tutti i "<<n_stud<<" studenti premere: 1\n";
        cout<<"per mostrare tutti gli studenti in ordine alfabetico rispetto al cognome premere: 2\n";
        cout<<"per ricercare e mostrare i migliori studenti premere: 3\n";
        cout<<"per mostrare gli studenti che hanno avuto 110 o 110 e lode premere: 4\n";
        cout<<"per mostrare la media del corso di laurea premere: 5\n";
        cout<<"per ordinare in maniera decrescente rispetto al voto ogni corso di laurea premere: 6\n";
        cout<<"per uscire dal programma premere: 0\n";
        cin>>scelta;
        cin.ignore();
        switch(scelta)
        {
                      case 1:              
        for(int i=0;i<n_stud;i++)
        {        
        cout<<"inserisci il cognome dello studente\n";
        cin.getline(tot_stud[i].cognome,25);
        cout<<"inserisci il nome dello studente\n";
        cin.getline(tot_stud[i].nome,25);
        cout<<"inserisci il corso a cui e' iscritto (informatica,elettronica,civile,meccanica,elettrica,gestionale)\n";
        cin>>tot_stud[i].corso;
        cout<<"inserisci il suo voto di laurea (numero intero)\n";
        cin>>tot_stud[i].voto;
        cout<<"digita 1 se lo studente ha ricevuto una lode, digita 0 se non ne ha ricevuta\n";
        cin>>tot_stud[i].lode;
        if(tot_stud[i].lode==1)
        { 
                                cout<<"lo studente ha ricevuto una lode\n"; 
        }
        else 
        { 
             cout<<"lo studente non ha ricevuto nessuna lode\n"; 
        }
        cout<<"indica in quanti anni lo studente ha conseguito la laurea\n";
        cin>>tot_stud[i].anni_iscr;
        cin.ignore();
        }
        break;
        case 2:
             for(int i=0;i<n_stud-1;i++)
             {
             j=i+1;
             do
             {
             if(tot_stud[i].cognome<tot_stud[j].cognome)
             {
             strcpy(temp,tot_stud[i].cognome);
             strcpy(tot_stud[i].cognome,tot_stud[j].cognome);
             strcpy(tot_stud[j].cognome,temp);
             }
             j=j+1;
             }while(j<n_stud);
             }
             cout<<"iscritti ordinati per cognome: \n";
             for(int i=0;i<n_stud;i++)
             {
             cout<<tot_stud[i].cognome<<"\n";
             }
             break;
        case 3:
             break;
        case 4:
             for (int i=0;i<n_stud;i++)
             {
                 a=0;
                 b=0;
                 if(tot_stud[i].lode==1)
                 {
                                        a=1;
                                        cout<<tot_stud[i].cognome<<" "<<tot_stud[i].nome<<" ha preso 110 lode\n";
                 }
                 if(tot_stud[i].voto==110)
                 {
                                          b=1;
                                          cout<<tot_stud[i].cognome<<" "<<tot_stud[i].nome<<" ha preso 110\n";
                 }
             }      
             if(a==0)
             {
                     cout<<"nessuno studente ha preso 110 e lode\n";
             }
             if(b==0)
             {
                     cout<<"nessuno studente ha preso 110\n";
             }                                                               
             break;
        case 5:
             break;
        case 6:
             break;
    }}while(scelta!=0); 
        system("pause");
        return 0;    
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non si scrive codice pronto in questo forum ... si dà una mano ma devi essere tu a impostare il codice.

    Vedi il regolamento ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    si ma infatti lo so non vorrei chiedere un codice pronto... però per esempio io il codice che ho fatto e adesso che mi sto andando a vedere il punto 6 da svolgere cioè prima di scrivere il codice lo penso nella mia testa, e penso a come farlo questo punto 6, e forse mi domando ma non pè che ho impostato male i dati per i corsi di laurea? non è che anche i corsi di laurea dovrebbero essere delle struct? e all'interno contenere il dato del voto?

    rileggendo il post mio precedente ammetto che forse le mie intenzioni potevano essere fraintese

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ogni studente può avere un voto in un solo corso di laurea (a proposito, mi sembrano pochini gli 11 caratteri che hai previsto), quindi la struttura potrebbe andare bene così.

    Ma se i corsi di laurea sono ben definiti, al posto di una stringa potresti usare una enum.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    no son giusti perchè informatica è la parola più lunga formata da 11 caratteri quindi van bene no?
    okkai la struttura è giusta.. così io avevo pensato per il case 6 di far così:

    codice:
    case 6:
    cout<<"inserisci corso di laurea per cui vuoi conoscere i voti\n";
    cin>>c_laurea;
    cout<<"corso scelto: "<<c_laurea<<"\n";
    dopo che inserisco il corso il secondo cout mi va in palla diciamo l'esecutore e mi continua a stampare in maniera infinita scritte...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Gli array di char prevedono un carattere NULL per terminare la stringa. Quindi, se i caratteri da inserire al massimo sono 11 tu ne devi prevedere 12 almeno,
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    mmm ok...

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    come potrei fare il punto 6? dovrei ordinare i voti in maniera decrescente rispetto al corso di laurea... non saprei come iniziare il case sinceramente...
    cioè non devo fare un for su tutti gli studenti, in questo caso dovrei fare un'altra operazine ma non mi viene in mente

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dato che i corsi sono solo 6 e non ce ne sono altri, ti conviene cambiare la struttura in questo modo

    codice:
    struct studente
    {
       char nome[26];
       char cognome[26];
       int voto;
       int lode;
       int anni_iscr;
    };
    e prevedere un array per gli studenti

    studenti[n_stud][6]

    Si potrebbe fare anche con delle liste e l'allocazione dinamica ma non so se hai fatto questi argomenti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    scusami ma come faccio se io ho studente[n_stud][6] e poi devo andare a scrivere per esempio mi chiede il corso e io glielo scrivo così cin>>studente[i].corso perchè il compilamento avviene dentro un for... e fino ad ora io opero così
    introducendo come mi hai detto tu allora come andrei a scrivere il corso che quello studente segue?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.