Download - Problema [Lectia 5] PROIECT INFORMATICA
![Page 1: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/1.jpg)
Problema [Lectia 5] PROIECT INFORMATICA
AUTOMOBILELEGrupa IV
![Page 2: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/2.jpg)
Problema noastra consta
intr-un exemplu din viata reala similar cu utilizarea
stivei alocate dinamic, si anume, cazul unor
automobile ce stationeaza la semafor.
![Page 3: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/3.jpg)
Textul problemei:
In Piata Avram Iancu, la semafor, asteapta 15 automobile. Acestea se vor citi din fisierul masini.in si vor fi caracterizate de numarul de inmatriculare si culoare.
Se cere:a) Creati stiva cu automobileleb) Afisati stivac) Calculati cate automobile rosii, albastre si argintii se afla
la semafor (pentru fiecare culoare in parte)d) Scrieti in fisierul auto.out automobilele care nu au numar
de cluj e) Cand semaforul se face verde primele k automobile
pleaca.Eliminati-le.
![Page 4: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/4.jpg)
CJ 27 ANA
BR 64 BICB 50 ABC CJ 65 IOA
CJ 84 TIM
![Page 5: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/5.jpg)
CJ 94 BIA AR 44 KYA
CJ 63 THO
CJ 14 MIRCJ 22 TRI
![Page 6: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/6.jpg)
CJ 55 AMK
B 24 KAL
CJ 52 ORW
SI 24 PRO
CJ 24 VIO
![Page 7: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/7.jpg)
Pasul 1 – Structura
struct nod{ char loc[10],lit[10],cul[20];int nr; nod *urm;};nod *varf;
Fiecare automobil este caracterizat de numarul de inmatriculare format din localitate (loc[10]), numar (nr) si litere (lit[10]) si culoare (cul[20]).
![Page 8: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/8.jpg)
Pasul 2 – Crearea stivei(cerinta a.)
Crearea stivei se realizeaza prin apelarea functiei PUSH intr-o alta functie de citire, si anume:
Functia push: void push (nod *&varf,char a[10],int b,char c[10], char d[10])
{ nod *p; p=new nod; strcpy (p->loc,a); p->nr=b; strcpy(p->lit,c); strcpy(p->cul,d);
p->urm=varf; varf=p;}
Functia de citire:void creare (nod *&varf)
{ nod *p; int i,b;
char a[10],c[10],d[10]; for (i=1; i<=15; i++)
{f>>a; f>>b; f>>c; f>>d; push (varf,a,b,c,d);
}}
![Page 9: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/9.jpg)
Adaugarea masinilor in stiva:
CJ 24 VIO argintiu
SI 24 PRO
CJ 52 ORW
B
CJ
CJ
CJ
24
55
22
AMK
MIR
TRI
14
KAL
CJ
AR
63 THO
KYA44
BIACJ 94
64BR BIC
CJ
CJ
B
CJ 27 ANA
20 ABC
65 IOA
84 TIM
rosu
argintiu
argintiu
verde
negru
albastru
galben
negru
rosu
argintiu
rosu
albastru
negru
verde
![Page 10: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/10.jpg)
Pasul 3 – Afisarea stivei(cerinta b.)void afisare (nod *varf)
{ nod *p; p=varf;
while (p!=NULL) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
560);cout<<p->loc<<" "<<p->nr<<" "<<p->lit<<" "<<p->cul<<endl;
cout<<"__________________"<<endl; p=p->urm;
}}
![Page 11: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/11.jpg)
Pasul 4 – Contorizarea culorilor masinilor(cerinta c.)
void culori (nod *varf,int&cont1,int&cont2,int&cont3){ nod *p; p=varf; while (p) { if (strcmp(p->cul,"rosu")==0) cont1++; else if (strcmp(p->cul,"albastru")==0) cont2++; else if (strcmp(p->cul,"argintiu")==0) cont3++; p=p->urm; }}
Pentru fiecare culoare (rosu,albastru si argintiu) este utilizat un contor ce creste in momentul in care in stiva sunt gasite automobilele caracterizate de una din aceste culori si care este transmis prin referinta.
![Page 12: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/12.jpg)
Pasul 5 – Masinile din afara Clujului(cerinta d.)
void numar (nod *varf){ nod *p; p=varf;
while (p) { if (strcmp(p->loc,"cj")!=0)
g<<p->loc<<" "<<p->nr<<" "<<p->lit<<" "<<p->cul<<endl; p=p->urm;
}}
Functia numar verifica din ce localitate este fiecare masina din stiva, iar cele care nu sunt inregistrate in cluj sunt notate in fisierul auto.out.
![Page 13: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/13.jpg)
Pasul 6 – Eliminarea primelor k masini(cerinta e.)
void pop (nod *&varf)
{ nod *p;
p=varf;
varf=varf->urm;
delete p;
}
![Page 14: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/14.jpg)
Exemplu pentru primele 4 masini:
![Page 15: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/15.jpg)
Pasul 7 – Main-ulmain (){ creare (varf); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 11); cout<<"Masinile care asteapta la semafor la semafor: "<<endl<<endl<<endl; afisare (varf); cout<<endl; culori(varf,cont1,cont2,cont3); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4); cout<<"Masini rosii: "<<cont1; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); cout<<endl<<"Masini albastre: "<<cont2; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); cout<<endl<<"Masini argintii: "<<cont3<<endl; cout<<endl; numar (varf); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15); cout<<"k: "; cin>>k; while (k!=0)
{ pop (varf); k--;} afisare (varf); f.close(); g.close();}
![Page 16: Problema [Lectia 5] PROIECT INFORMATICA](https://reader033.vdocuments.site/reader033/viewer/2022050721/5681572c550346895dc4c908/html5/thumbnails/16.jpg)
Realizatori:
Bojan RoxanaBretea Denisa Chereches LuanaChira Luiza Felecan Bianca Ranga Ramona
Grupa IV – Clasa Xd