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;
}