160 likes | 315 Views
Problema [Lectia 5] PROIECT INFORMATICA. AUTOMOBILELE Grupa IV. P roblema noastra consta intr-un exemplu din viata reala similar cu utilizarea stivei alocate dinamic, si anume, cazul unor automobile ce stationeaza la semafor. Textul problemei:.
E N D
Problema[Lectia 5] PROIECT INFORMATICA AUTOMOBILELE Grupa IV
Problema noastra consta intr-un exemplu din viata reala similar cu utilizarea stivei alocate dinamic, si anume, cazul unor automobile ce stationeaza la semafor.
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 automobilele b) Afisati stiva c) 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.
CJ 84 TIM CJ 27 ANA B 50 ABC BR 64 BIC CJ 65 IOA
CJ 63 THO CJ 22 TRI CJ 14 MIR AR 44 KYA CJ 94 BIA
SI 24 PRO B 24 KAL CJ 24 VIO CJ 55 AMK CJ 52 ORW
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]).
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); } }
Adaugarea masinilor in stiva: CJ 27 ANA verde B 20 ABC negru CJ 65 IOA albastru CJ 84 TIM rosu BR 64 BIC argintiu CJ 94 BIA rosu AR 44 KYA negru CJ 63 THO galben CJ 14 MIR albastru CJ 22 TRI negru CJ 55 AMK verde B 24 KAL argintiu CJ 52 ORW argintiu SI 24 PRO rosu CJ 24 VIO argintiu
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; } }
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.
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.
Pasul 6 – Eliminarea primelor k masini(cerinta e.) void pop (nod *&varf) { nod *p; p=varf; varf=varf->urm; delete p; }
Pasul 7 – Main-ul main () { 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(); }
Realizatori: Bojan Roxana Bretea Denisa Chereches Luana Chira Luiza Felecan Bianca Ranga Ramona Grupa IV – Clasa Xd