Sei sulla pagina 1di 6

DIPARTIMENTODIELETTRONICA INTELLIGENZAARTIFICIALEETELECOMUNICAZIONI UNIVERSITA POLITECNICA DELLE MARCHE

Corso di Fondamenti di Informatica (M-Z) Prof. Aldo Franco Dragoni


Avvertenze ConsegnaresolofogliformatoA4. Scriveresuunsololato(nofronteretro) Inordinedipreferenzausareinchiostronero,matita,inchiostroblu. Intestaaciascunfoglioscrivere:cognome,nome,numeroprogressivodipaginarispettoaltotale;esempioperil secondofogliodi3consegnati:GiuseppeRusso2/3 Manteneresulbancoillibrettooaltrodocumentodiriconoscimentofinoacontrolloavvenuto Nientaltrodevetrovarsisulbanco:nonconsentitoconsultarelibri,dispense,appunti,ecc. Lacorrezionediriferimentoperlautovalutazioneverreffettuatainquestastessaaulaallafinedellaprova Laconsegnadellefotocopiedeicompitiavverralterminedellacorrezione Chisipresentaalloraledeveportarelimplementazionealcomputerdellapropriasoluzione,eventualmente corretta,corredatadituttoquantonecessarioallaverificadelcorrettofunzionamento.

ProvaScritta22marzo2007 Siscrivaunprogrammapercostruireegestireunalistadistudenti,identificatidaCognome,userID numericoepassword.Ilprogrammapu: 1. inserireunnuovostudenteinmanieraordinatarispettoallouserID 2. visualizzareaschermolalistadeglistudenti 3. estrarreunostudenteinbasealCognome Alpunto1sidevefareunaverificachel'userIDsceltononesistagia'inlista,perchintalcaso l'immissionenondeveessereconsentita.


#include<iostream> usingnamespacestd; structstudente {charcognome[20]; intuserID; charpassword[10]; studente*succ; }; typedefstudente*lista; //Questaprocedurachiedeeleggedall'inputstandardcognome, //passwordeduserIDdellostudente boolinserisci_dati(studente&s) { cout<<"Perfavore,immettiiltuoCognome."; cin>>s.cognome; cout<<"Perfavore,scegliiltuouserIDnumerico."; cin>>s.userID; cout<<"Perfavore,scegliunapassword."; cin>>s.password; } //Questafunzionebooleanarestituiscetrueselalistacontiene
60131ANCONAITALYViaBrecceBiancheSegreteriaphone+39(71)2204242 fax+39(71)2204835email:segreteria.deit@univpm.it

DIPARTIMENTODIELETTRONICA INTELLIGENZAARTIFICIALEETELECOMUNICAZIONI UNIVERSITA POLITECNICA DELLE MARCHE

//unelementoconquell'userIDenevisualizzailcognome boolverifica_userID(listainizio,intID) {boolnuovoID=true; while(inizio!=0&&inizio>userID!=ID)inizio=inizio>succ; if(inizio==0)returnnuovoID; else { nuovoID=false; cout<<"l'userID"<<ID<<"e'gia'possedutodallostudente"<< inizio>cognome<<"\n\n"; } returnnuovoID;} //Questaprocedurainserisceilnuovoelementoordinatamente //rispettoall'userID voidinserisci_ordinatamente(lista&inizio,studentee) {listap=0,q,r; for(q=inizio;q!=0&&q>userID<e.userID;q=q>succ)p=q; r=newstudente; *r=e; r>succ=q; if(q==inizio)inizio=r;//sesideveinserireintesta elsep>succ=r;} //Questafunzionebooleanarestituiscetruesoloseledue //stringhepreseininputsonoidentiche. booluguali(charstringa1[],charstringa2[]) {inti=0; while(stringa1[i]!='\0') if(stringa1[i]==stringa2[i])i++; elsereturnfalse; if(stringa2[i]=='\0')returntrue; elsereturnfalse;} //Questafunzionebooleanarestituiscetruesolosehaestratto //l'elementodatodallalista. boolestrai_elem_dato(lista&inizio,studente&e) {listap=0,q; for(q=inizio;q!=0&&!uguali(q>cognome,e.cognome);q=q>succ)p=q; if(q==0)returnfalse;//l'elementononstatotrovato if(q==inizio)inizio=q>succ;//l'elementocercatoerailprimo elsep>succ=q>succ; e=*q; deleteq; returntrue;} //Questafunzionevisualizzalalistaaschermo. voidstampaLista(listap0) {listap=p0;

60131ANCONAITALYViaBrecceBiancheSegreteriaphone+39(71)2204242 fax+39(71)2204835email:segreteria.deit@univpm.it

DIPARTIMENTODIELETTRONICA INTELLIGENZAARTIFICIALEETELECOMUNICAZIONI UNIVERSITA POLITECNICA DELLE MARCHE

if(p0==0) {cout<<"lalistavuota!\n"; return;}; while(p!=0) {cout<<p>cognome<<''<<p>userID<<''<<p>password<<''<<'\n'; p=p>succ; }} //Questoilprogrammaprincipalecheproducel'outputriportato //diseguito intmain() { charr; listaelenco=0; studenteel; do { cout<<endl<<"Eccoquellochepuoifare:\n"; cout<<"i:inserisciunnuovostudente\n"; cout<<"s:visualizzaaschermolalistadeglistudenti\n"; cout<<"e:estraiunostudenteinbasealcognome\n"; cout<<"Qualunquealtrocarattereterminailprogramma.\n\n"; cin>>r; switch(r) { case'i':{inserisci_dati(el); if(verifica_userID(elenco,el.userID)) inserisci_ordinatamente(elenco,el);};break; case'e':{cin>>el.cognome; estrai_elem_dato(elenco,el); cout<<"Hotoltolostudente"<<el.cognome <<"chehailnumerodiuserID"<<el.userID<<endl;};break; case's':stampaLista(elenco);break; } } while(r=='i'||r=='e'||r=='s'); }

Esempio
prompt$./a.out
Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

s lalistavuota!
Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti

60131ANCONAITALYViaBrecceBiancheSegreteriaphone+39(71)2204242 fax+39(71)2204835email:segreteria.deit@univpm.it

DIPARTIMENTODIELETTRONICA INTELLIGENZAARTIFICIALEETELECOMUNICAZIONI UNIVERSITA POLITECNICA DELLE MARCHE

e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

i Perfavore,immettiiltuoCognome.Fini Perfavore,scegliiltuouserIDnumerico.123 Perfavore,scegliunapassword.ciccio


Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

i Perfavore,immettiiltuoCognome.Mancini Perfavore,scegliiltuouserIDnumerico.124 Perfavore,scegliunapassword.qwerty


Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

i Perfavore,immettiiltuoCognome.Belli Perfavore,scegliiltuouserIDnumerico.122 Perfavore,scegliunapassword.asdfg


Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

s Belli122asdfg Fini123ciccio Mancini124qwerty


Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

i Perfavore,immettiiltuoCognome.Baldi Perfavore,scegliiltuouserIDnumerico.123 Perfavore,scegliunapassword.zxcvb l'userID123e'gia'possedutodallostudenteFini


Eccoquellochepuoifare:

60131ANCONAITALYViaBrecceBiancheSegreteriaphone+39(71)2204242 fax+39(71)2204835email:segreteria.deit@univpm.it

DIPARTIMENTODIELETTRONICA INTELLIGENZAARTIFICIALEETELECOMUNICAZIONI UNIVERSITA POLITECNICA DELLE MARCHE

i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

s Belli122asdfg Fini123ciccio Mancini124qwerty


Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

e Fini HotoltolostudenteFinichehailnumerodiuserID123
Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

s Belli122asdfg Mancini124qwerty
Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

i Perfavore,immettiiltuoCognome.Baldi Perfavore,scegliiltuouserIDnumerico.123 Perfavore,scegliunapassword.zxcvb


Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

s Belli122asdfg Baldi123zxcvb Mancini124qwerty


Eccoquellochepuoifare: i:inserisciunnuovostudente s:visualizzaaschermolalistadeglistudenti e:estraiunostudenteinbasealcognome Qualunquealtrocarattereterminailprogramma.

j
60131ANCONAITALYViaBrecceBiancheSegreteriaphone+39(71)2204242 fax+39(71)2204835email:segreteria.deit@univpm.it

DIPARTIMENTODIELETTRONICA INTELLIGENZAARTIFICIALEETELECOMUNICAZIONI UNIVERSITA POLITECNICA DELLE MARCHE

prompt$

60131ANCONAITALYViaBrecceBiancheSegreteriaphone+39(71)2204242 fax+39(71)2204835email:segreteria.deit@univpm.it