Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
Tema
~ Evidenta participantilor la turneul de ciclism din Franta ~
Continut
un fisier text si un fisier binarlista;
arbore, cu operatiile aferente;
metoda generala de programare: Divide et Impera;
combinatorica : permutari
Datele vor fi retinute in doua fisiere, unul de tip text ("ciclist.txt"), iar celalalt de tip binar ("ciclist.dat"), avand urmatoarea structura:
Fisierul text "ciclist.txt" contine informatii generale despre fiecare jucatoare in parte:
nume, de tip sir de caractere;
prenume, de tip sir de caractere;
tara, de tip sir de caractere;
nr. tricou, de tip intreg.
Fisierul binar "ciclist.dat" contine informatii detaliate despre jucatoare:
data nasterii ( zi,luna,an ), de tip intreg;
greutate, de tip real;
nr curse castigate, de tip intreg;
nr. de pe tricou, de tip intreg.
Asupra acestor fisiere pot si efectuate urmatoarele operatii:
creare;
adaugare;
modificare;
stergere;
afisare
Informatiile din fisierul text pot fi descarcate intr-o lista, asupra careia se pot efectua anumite operatii, apoi se revine in fisier, pastrandu-se modificarile efectuate asupra listei. Operatiile care se pot efectua asupra listei sunt:
adaugare element la inceputul listei;
adaugare element la sfarsitul listei;
adaugarea unui element dupa un anumit nod;
modificarea unui element existent;
stergerea elementului de la inceputul listei;
stergerea elementului de la sfarsitul listei;
stergerea unui anumit nod;
afisare
Informatiile din fisierul binar pot fi descarcate intr-un arbore, asupra caruia se pot efectua urmatoarele operatii:
adaugare;
cautare;
stergere;
parcurgere prin una dintre cele 3 metode :
o preordine ( RSD ) ;
o inordine ( SRD ) ;
o postordine ( SDR ) ;
afisare arborescenta.
Exista apoi o comanda de revenire in fisier.
Pentru memorarea informatiilor din fisiere, lista si arbore, au fost folosite structurile InfoFisierText, InfoFisierBinar, nodLista si nodArbore, cu campurile aferente.
Pentru citirea informatiilor despre o noua jucatoare au fost create functiile CitireInfoText(), respectiv CitireInfoBinar(), ambele de tip void. Informatiile sunt citite in variabile de tip structura, declarate global ( "t" de tip InfoFisierText pentru fisierul text, "b" de tip InfoFisierBinar pt. fisierul binar ) .
Functiile folosite in program
Functiile void CreareFisierText() si void CreareFisierBinar() : creeaza fisierul "ciclist.txt", respectiv "ciclist.dat";
Functiile void AdaugareFisierText() si void AdaugareFisierBinar() : deschid fisierele folosind modul "at", respectiv "ab"; daca fisierul se deschide corect, se apeleaza functia CitireInfoText(), respectiv CitireInfoBinar(), pt. citirea datelor de la tastatura, apoi datele citite sunt scrise in fisiere;
Functiile void ModificareFisierText() si void ModificareFisierBinar() : modifica informatiile despre un ciclist. Pt. acesta se citeste de la tastatura numarul de pe tricou al ciclistului respectiv; daca acesta a fost gasit in fisier, pe ecran apare un meniu, cu ajutorul caruia utilizatorul poate modifica informatiile existente in fisier referitoare la ciclistul respectiv ( sunt permise oricate modificari sunt considerate necesare ). Daca nr. de pe tricou nu este gasit, se afiseaza un mesaj corespunzator, iar fisierul ramane nemodificat. Sunt folosite fisierele auxiliare "temp.txt", respectiv "temp.dat", in care sunt scrise atat informatiile modificate despre ciclistul dorit, cat si informatiile deja existente despre ceilalti ciclisti. Fisierele initiale sunt apoi sterse, iar fisierele auxiliare sunt redenumite "ciclist.txt", respectiv "ciclist.dat";
Functiile void StergereFisierText() si void StergereFisierBinar() : realizeaza stergerea din fisiere a informatiilor despre un anumit ciclist. Si aici sunt folosite fisierele auxiliare "temp.txt", respectiv "temp.dat", in care sunt copiate doar informatiile despre ceilalti ciclisti. Fisierele sunt apoi redenumite, dupa ce au fost sterse in prealabil fisierele initiale.Daca ciclistul nu este gasit, se afiseaza un mesaj corespunzator, informatiile din fisier ramanand nemodificate;
Functiile void AfisareFisierText() si void AfisareFisierBinar() : afiseaza informatiile din cele doua fisiere. Daca fisierele nu contin nicio inregistrare, este afisat un mesaj corespunzator;
Functia void DescarcaFisierInLista() : realizeaza descarcarea informatiilor din fisierul text intr-o lista simplu-inlantuita. Daca fisierul contine cel putin un ciclist, informatiile despre aceasta sunt introduse in primul nod al listei, care constituie totodata si ultimul nod. Apoi, cat timp nu s-a ajuns la sfarsitul fisierului, se citesc informatii despre un nou ciclist si se adauga in lista. Dupa fiecare adaugare, ultimul nod devine nodul curent;
Functia void addInceput() : adauga un element la inceputul listei. Pentru citirea informatiilor despre noul ciclist se apeleaza functia CitireInfoText();
Functia void addSfarsit() : adauga un element la sfarsitul listei. Pentru citirea informatiilor apeleaza functia CitireInfoText();
Functia addDupaNod() : citeste nr. de tricou al ciclistului dupa care se doreste inserarea noului nod; in momentul in care nodul este gasit, citeste de la tastatura informatii despre noul ciclist ,aloca memorie si reface legaturile. Daca nr. de tricou nu este gasit, este afisat un mesaj corespunzator, lista ramanand nemodificata;
Functia void ModificareLista() : modifica informatiile dintr-un nod dat al listei. Cheia este reprezentata si aici de nr. de pe tricou. Pot fi realizate oricate modificari este necesar. Daca ciclistul nu este gasita, se afiseaza un mesaj corespunzator;
Functia void stergeInceput() : sterge un element de la inceputul listei;
Functia void stergeSfarsit() : sterge un element de la sfarsitul listei;
Functia void stergeNod() : citeste nr. de pe tricou al ciclistului ce se doreste a fi sters, apoi parcurge lista nod cu nod, pana il gaseste pe acela care contine nr. respectiv. Pt. a se putea restabili legaturile, este folosita variabila auxiliara "nod", in care este retinut nodul anterior celui care trebuie sters. Daca nodul nu a fost gasit, se afiseaza un mesaj corespunzator;
Functia void AfisareLista() : afiseaza informatiile din lista;
Functia void Descarca_Lista_Fisier() : transfera informatiile din lista in fisierul text. Fisierul va contine doar informatiile din lista, cele existente initial fiind sterse;
Functia void DescarcareFisierArbore() : creeaza arborele, adauga in radacina prima inregistrare din fisierul binar, apoi, cat timp nu s-a ajuns la sfarsitul fisierului, este citita o noua inregistrare si adaugata in arbore. Drept cheie se foloseste nr. de tricou. In subarborele stang vor fi puse cheile mai mici decat radacina, iar in subarborele drept - cele mai mari;
Functia void AdaugareArbore(nodArbore *radacina) : adauga o noua inregistrare in arbore. Variabila "aux" este folosita pt. a stabili in care subarbore trebuie adaugat noul nod. Are valoarea 1 daca se adauga in dreapta nodului anterior, respectiv 0 daca se adauga in stanga;
Functia void CautareArbore(nodArbore *radacina, int nrt) : cauta in arbore un anumit ciclist; primeste ca parametri nodul radacina al arborelui si nr de tricou al ciclistului care trebuie cautate. Daca ciclistul este gasit, sunt afisate informatiile disponibile referitoare la acesta; in caz contrar este afisat un mesaj corespunzator;
Functia void StergereNodArbore(nodArbore *p, int nrt) : sterge din arbore ciclistul al carei nr. de tricou este transmis prin parametrul "nrt". Se cauta astfel: se porneste de la radacina, se compara informatia din nod cu "nrt"; daca este mai mare, ne pozitionam pe nodul din dreapta radacinii; daca este mai mica ne pozitionam pe nodul din stanga, iar daca este egala nodul respectiv va fi sters. Stergerea se face astfel: daca elementul care trebuie sters nu are in dreapta niciun fiu, atunci la nodul anterior se leaga subarborele sau stang. Altfel, se cauta cel mai din stanga fiu al subarborelui drept, si la acesta se leaga subarborele stang al nodului care trebuie sters, apoi se realizeaza legatura dintre nodul anterior celui care trebuie sters si subarborele sau drept;
Functiile void RSD(nodArbore *radacina), void SRD(nodArbore *radacina) si void SDR(nodArbore *radacina) : realizeaza parcurgerea arborelui in preordine, inordine, respectiv postordine;
Functia void afisArb(nodArbore *p, int nivel) : realizeaza parcurgerea sub forma arborescenta;
Functia void DescarcaArboreFisier(nodArbore *radacina) : descarca informatiile din arbore in fisierul binar. Informatiile existente anterior in fisier sunt sterse;
Functia void div_et_impera() : afiseaza numarul total de curse castigate pana in acel moment, astfel: citeste informatiile din fisierul binar si le descarca in vectorul B[] de tip InfoFisierBinar, declarat global; daca fisierul contine cel putin o inregistrare, este apelata functia int suma(int li, int ls), iar daca nu, este afisat un mesaj corespunzator;
Functia int suma(int li, int ls) : este o functie recursiva care realizeaza propriu-zis suma numerelor din vectorul B[], prin metoda Divide et Impera;
Functia void sortareBUBBLESORT() : realizeaza sortarea listei prin metoda bulelor, si afiseaza lista obtinuta. Sortarea se poate face crescator sau descrescator;
Functia void meniuLista() : realizeaza afisarea pe ecran a unui meniu corespunzator operatiilor care pot fi efectuate pe lista, si apeleaza functiile necesare satisfacerii cerintelor utilizatorului. Iesirea din acest meniu implica salvarea modificarilor, prin descarcarea informatiilor din lista in fisierul text;
Functia void meniuArbore() : realizeaza afisarea unui meniu corespunzator operatiilor pe arbore. La iesirea din acest meniu, informatiile din arbore sunt descarcate in fisierul binar.
Meniul principal
La executarea programului, pe display apare un meniu, care contine operatiile care pot fi efectuate la nivel de fisier, atat pt fisierul text cat si pentru cel binar, precum si aplicarea unei metode generale de progaramare (Divide et Impera) si combinatorica. Pentru operatiile pe fisierul text sunt utilizare taste de selectie de la 1 la 6, iar pt. cel binar de la 'a' la 'f'. Descarcarea fisierului text in lista si aparitia meniului corespunzator operatiilor pe lista se face apasand tasta 6. Descarcarea fisierului binar in arbore si aparitia meniului corespunzator se face apasand tasta 'f'.Pentru aplicarea metodei divide et impera se apasa tasta 7, iar pt. combinatorica(permutari) tasta 8. Iesirea din program se face apasand tasta 0.
In continuare vor fi afisate imagini facute pe parcursul rularii programului.
Meniu principal:
- optiunea [2] - Adaugare inregistrare
- optiunea [3] - Modificare inregistrare
- optiunea [4] - Stergere inregistrare
- optiunea [5] - Afisare inregistrari
-optiunea [6] - Mutare continut fisier text in lista
-optiunea [9] - Sortare prin metoda bulelor
-optiunea [b] - Adaugare inregistrare
-optiunea [e] - afisare inregistrari
-optiunea [f] - mutare continut fisier binar in arbore
-optiunea [3] - afisare in preordine
-optiunea [4] - afisare in inordine
-optiunea [5] - afisare in postordine
-optiunea [6] - afisare arborescenta
-optiunea [7] - suma golurilor folosind metoda Divide et Impera
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre:
|
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |