Chi mi può risolvere questo compito di informatica , sarebbe urgente ... grazie mille a chi lo puo' fare.
Scrivere sul file cognome.cpp un programma che gestisce una unità didattica (con una coda di allievi per la segreteria (realizzata con una lista) e una classe con al più 10 allievi (realizzata con un array), programma costituito da:
- le seguenti dichiarazioni di tipo (da scrivere prima delle funzioni):
struct allievo {char id[21]; int vt;};
// id: stringa lunga al più 20 caratteri; vt: voto del test di ingresso
struct elem {allievo inf; elem* pun;};
// elemento della lista
struct comp {bool lib; allievo al; };
// componente dell’array: il campo lib indica se la componente e’ libera
struct did {elem* pp; comp ee[10]; };
// unita’ didattica con un puntatore pp e un array ee di 10 componenti
- una funzione di tipo void ini(), avente come argomento formale una sruttura dd di tipo did, che inizializza il campopp con 0 e tutte le componenti dell’array ee con il campo lib uguale a true;
- una funzione di tipo void stampaalli(), avente come argomenti formali una struttura alli di tipo allievo e un fstream ff, che scrive su uscita standard e su ff il campo id di alli seguito da tabulazione (vedi file cognome.txt)
- una funzione di tipo void stampac(), avente come argomenti formali un puntatore pn di tipo elem* e un fstream ff, che su uscita standard e su ff scrive: o Coda vuota oppure il campo id di ogni allievo in coda seguito da punto e virgola (vedi file cognome.txt); e poi, comunque, un fine linea;
- una funzione di tipo void insc(), avente come argomenti formali un puntatore pn di tipo elem* e una struttura alli di tipo allievo, che inserisce in coda un nuovo elemento contenente alli nella coda puntata da pn;
- una funzione di tipo booleano estc(), avente come argomento formale un puntatore pn di tipo elem* e una strutturaalli di tipo allievo, che estrae un elemento dalla coda puntata da pn e ne restituisce l’informazione in alli;
- una funzione di tipo void stampaa(), avente come argomenti formali un array aa di 10 componenti di tipo comp e un fstream ff, che su uscita standard e su ff scrive: o Classe vuota oppure per ogni componente non libera di aa, il campo id del corrispondente allievo seguito da punto e virgola (vedi file cognome.txt); e poi, comunque, un fine linea;
- una funzione di tipo booleano insa(), avente come argomenti formali un array aa di componenti di tipo comp e una struttura alli di tipo allievo, che, se possibile, cerca in aa la prima componente libera, la trasforma in non libera e vi inserisce alli;
- una funzione di tipo void orda(), avente come argomenti formali un array aa di componenti di tipo comp, che ordina le componenti non libere in modo che il campo id degli allievi sia ordinato alfabeticamente (trovare preliminarmente il numero delle componenti non libere);
- la seguente funzione main():
int main()
{ fstream uu;
uu.open("./cognome.txt",ios:ut);
uu << "Cognome Nome\n" << "Testo n. numero\n\n";
allievo al, a1 = {"Bianchi Carlo", 82},
a2 = {"Rossi Mario", 90}, a3 = {"Verdi Paola", 70},
a4 = {"Neri Lucia", 95}, a5 = {"Bruni Gino", 96};
did ud; ini(ud);
insc(ud.pp, a3); insc(ud.pp, a5); insc(ud.pp, a4);
stampac(ud.pp, uu);
if (estc(ud.pp, al)) { stampaalli(al, uu); stampac(ud.pp, uu); }
if (estc(ud.pp, al)) { stampaalli(al, uu); stampac(ud.pp, uu); }
if (estc(ud.pp, al)) { stampaalli(al, uu); stampac(ud.pp, uu); }
if (estc(ud.pp, al)) { stampaalli(al, uu); stampac(ud.pp, uu); }
stampaa(ud.ee, uu);
insa(ud.ee, a1); insa(ud.ee, a2); insa(ud.ee, a3);
insa(ud.ee, a4); insa(ud.ee, a5);
stampaa(ud.ee, uu);
orda(ud.ee);
stampaa(ud.ee, uu);
}