Skip to content

cosmintanasa47/tema_pclp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation


Pentru prima cerinta a temei se citesc de la tastatura numarul de cartiere si
de pachete,elementele structurilor cartier, cat si o parte din elementele structurilor pachete.
Pentru ca alocarile de memorie (si modificarile) sa fie vizibile si in functia main si implicit
in tot programul, s-au folosit ca parametrii la functia read pointer dublu la structurile
pachet si cartier.(asemanator si la functia postas_sef pentru structura postas)

In functia break_down_adresa, adresa fiecarui pachet a fost folosita pentru a completa
campurile idCartier, strada si numar din componenta fiecarei structuri de tip pachet.
Valorile acestor campuri au fost calculate prin suma puterilor lui 2, unde puterile
reprezinta index-urile la care adresa de index = 1.

Pentru cea de-a treia cerinta am scris functia postas_sef care aloca memorie pentru
fiecare structura postas valori pentru id si pentru fiecare pachet se verifica daca
idCartier coincide cu id-ul postasului, daca da, atunci numarul pachetelor
pentru acel postas creste si se adauga pachetul in vectorul de pachete al postasului.

In functia sort_pachete, facuta pentru cerinta 4, se primeste vectorul de postasi si
pentru fiecare postas se face sortarea pachetelor in functie de prioritatea fiecarui pachet,
iar daca prioritatea este aceeasi, in functie de greutate. (in ordine descrescatoare in ambele cazuri)

Pentru codificarea mesajului fiecarui pachet se ia vectorul de postasi si pentru fiecare postas
se ia fiecare pachet si fiecare mesaj este transformat prin 
intermediul functiei inversare_si_eliminare si apoi se calculeaza doua coduri,
iar ultimul va fi mesajul codificat din componenta fiecarui pachet.
Parcurgerea mesajului din functia inversare_si_eliminare se face de la
dreapta la stanga si se numara toate caracterele acceptate, adica literele,
sifrele si '-', pana cand se ajunge la un spatiu sau semn de punctuatie
si se transcrie cuvantul gasit intr-un char* intermediar. Dupa terminarea parcurgerii
se mai citeste si ultimul cuvant al mesajului.

Pentru cerinta 6 am scris 3 functii. Functia principala este noul_cod unde pentru
fiecare postas se ia id_postas si fiecare cod al fiecarui pachet al postasului
si se verifica daca acestea doua au in componenta cifre comune si daca da se trece
la alterarea codului. (functiile contine_cifra_comuna si alterare_cod)
Alterarea codului se face prin aplicarea algoritmului precizat in cerinta, 
cat si in comentariile din cod.

Ultima functie, scor, ia vectorul de postasi si pentru fiecare din pachetele
acestora, pe baza idCartier-ului, strazii si numarului se recalculeaza
codul exact ca la codificarea mesajului. Se reface procesul si daca 
rezultatul coincide cu codul pe care il are pachetul scorul postasului
de care tine pachetul creste. Scorurile sunt stocate intr-un vector de 
intregi de lungime 32 (maximul de postasi). Scorul final al unui postas este calculat
dupa formula: pachete pentru care codurile coincid / totalul de pachete

Fiecare functie principala (care corespunde unei cerinte) are o parte de output 
care este executata daca task corespunde "numarului" functiei.

Functiile primesc ca parametrii vectori de postasi pentru a putea folosi
variabile din acestia pentru output, iar pentru partea de procesare 
se folosesc in principal structurile de pachete din interiorul fiecarei
structuri postas, variabilele nr_pachete si nrC (numar postasi) fiind folosite
doar ca limite pentru parcurgerile fiecarui pachet sau postas. 

About

pclp1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published