Meniu Referate
Romana
Romana1
Romana2
Istorie
Istorie1
Geografie
Geografie1
Diverse
Drept
Economie
Filozofie
Fizica
Informatica
Biologie
Chimie
Italiana
Spaniola
Germana
Franceza
Engleza
Marketing
Matematica
Medicina
Psihologie
Astronomie
Stiinte Politice
Proiecte

Fortran, Supraincarcarea operatorului, FISIERUL BXXIII14H

... afiseaza cuvantul si frecventaIprintf cuvantulstt are frecventadtn,cuvant,frecv Itnod p se aplica operatorul ne standardprintf operator ne tlutn, coreleft ptnod ne char ilungs printf operator ne tlutn, coreleft return p Svoid tnodoperator deletevoidp supraincarcarea operatorului deleteIse aplica operatorul delete standard printf operator delete tlutn, coreleft delete p printf operator delete tlutn, coreleft Svoid tnod operator incrementeaza frecvIfrecv SBoolean tnod retind returneaza valoarea indIreturn tnod ind SObservatie Functia coreleft returneaza dimensiunea,in octeti, a memoriei libere in momentul apelului.Ea a fost apelata in mai multe functii pentru a putea urmari momentele in care se dezaloca obiectele care sant instantieri ale clasei tnod.23.12 Sa se defineasca tipul abstract slist pentru implementarea listei simplu inlantuite.Listele simplu inlantuite au fost implementate in limbajul C in capitolul 11.Pentru gestiunea listelor simplu inlantuite s-au folosit doua variabile prim si ultim care sant pointeri sper primul si respectiv ultimul nod al listei. Aceste valori se vor utiliza si in cazul de fata cu acelasi scop.Ele sunt date membru protejate ale tipului abstract slist Avantajul implementarii tipului abstract slist este acela ca , se pot defini simultan si simplu orice obiecte de tip lista. Functiile membru ale tipului abstract slist sunt constructor implicit deconstructor adaugarea unui nou nod inaintea primului nod al listei stergerea primului nod al listei stergerea ultimului nod al listei cautarea in lista a unui nod afisarea datelor aflate in nodurile listei.Nodurile listei sunt obiecte de tip tnod, tip definit in exercitiul 23.11FISIERUL BXXIII12Hifndef ssBXXIII11sHinclude BXXIII1.CPPdefine ss BXXIII1sHclass slist I tnod prim tnod ultim public slist constructor slist destructor tnod adauga tod adauga un nod dupa cel spre care pointeaza ultim tnod insereaza tnod p insereaza un nod inaintea celui spre care pointeza prim void sprim sterge primul nod din lista void sultim sterge ultimul nod al listei tnod cauta tnod p - cauta nodul din lista pentru care p - cuvant pointeaza spre un sir identic cu cel care pointeaza cuvant din nod -returneaza pointerul spre nodul respectiv sau zero daca nu exista un astfel de nod void afislist afiseaza datele din nodurile listei S Functiile membru ale clasei slist se definesc in fisierul de extensie CPP, de mai jos FISIERUL BXXIII12idndef ssBXXIII12sHinclude BXXIII12.Hdefine ssBXIII12sHendifinline slist slist constructorIprim ultim 0 Sslist slist destructor distruge toate nodurile listeiItnod p, q for p prim p pq I qp-urm pointer spre nodul urmator delete p operatorul delete supraincarcatSprim ultim 0 Stnod slistadaugatnodp adauga un nod dupa ultimul nod al listeiIif prim 0 lista vida prim p else ultim - urm p ultim p return p Stnod slist insereaza tnod p insereaza un nou nod inaintea celui spre care pointeaza prinI if prim 0 lista vida ultim p else p - urm prim prim p return p Svoid slist sprim sterge primul nod din listaI if prim0 I tnod p prim - urm delete prim se aplica operatorul delete supraincarcat prim p if prim 0 ultim 0 lista a devenit vida S else printf lista vidatn Svoid slist sultim sterge ultimul nod al listeiI if prim I tnod 8p,p1 p pointeaza spre nodul curent p prim p1 poinbteaza spre nodul precendet p1 0 hile p ! ultim I parcurge lista p1 p p p - urm S p pointeaza spre ultimul nod p1 pointeaza spre nodul precedent if p1 0 I lista are un singur nod si devine vida delete p se aplica operatorul supraincarcat prim ultim 0 return S nodul spre care pointeaza p1 devine ultimul nod al listei p1 - urm 0 ultim p1 se sterge nodul spre care pointeaza p delete p se aplica operatorul supraincarcatS else printf lista vidatn Stnod slist cauta tnod p - cauta nodul pentru care cuvant pointeaza spre un sir identic cu cel spre care pointeaza p - cuvant - returneaza pointerul spre nodul respectiv sau 0 daca nu exista un astfel de nod. I tnod q for qprimqqq-urm if stricmp p - cuvant,q - cuvant 0 return q return 0 Svoid slist afislist - afiseaza pentru fiecare nod -cuvant si -frecv.I int nrlin 1 for tnod p prim p p p - urm I p - afistnod nrlin if nrlin 23 0 I printfActionati o tasta pentru a continuatn getch S SS23.13 Sa se scrie un program care citeste un text si afiseaza frecventa de aparitie a fiecarui cuvant din tex.Nu se face distinctie intre literele mari si mici Aceasta problema a fost rezolvata in mai multe moduri in capitolele precedente. In particular,in capitolul 11 se da o rezolvare folosind listele simplu inlantuite. Programul de fata utilizeaza aceeasi metoda.PROGRAMUL BXXIII13 include alloc.h ifndef ssCONIOsH include conio.h define ssCONIOsH endif include BXIII12.CCP main citeste un text si afiseaza frecventa cuvintelor citite 8 I slist lista tnod nod, p printf lutn,coreleft hile tnod retind false nu s-a ajuns la sfarsitul textului I nod ne tnod se aplica operatorul ne supraincarcat cauta nodul in lista if tnod retind false if p lista.cautanod I cuvantul exista deja in lista p incrementeaza frecv delete nod se aplica operatorul delete supraincarcat S else lista.adauga nod nodul spre care pointeazanod contine un cuvant negasit in lista se adauga la lista else delete nod printfPentru a continua actionati o tastatn getch S sfarsit hile listeaza nodurile listei lista.afislist S23.2 Supraincarcarea operatorului In limbajul C se pot face atribuiri de obiecte care sant instantieri ale aceleeasi clase.Exemplu Fie instantierile numaesclasa obiect1,obiect2 O atribuire de forma obiect2 obiect1 este acceptata de compilator. La atribuirea de ob...
Download