problema [lectia 5] proiect informatica
DESCRIPTION
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:. - PowerPoint PPT PresentationTRANSCRIPT
Problema [Lectia 5] PROIECT INFORMATICA
AUTOMOBILELEGrupa 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 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.
CJ 27 ANA
BR 64 BICB 50 ABC CJ 65 IOA
CJ 84 TIM
CJ 94 BIA AR 44 KYA
CJ 63 THO
CJ 14 MIRCJ 22 TRI
CJ 55 AMK
B 24 KAL
CJ 52 ORW
SI 24 PRO
CJ 24 VIO
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 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
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;
}
Exemplu pentru primele 4 masini:
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();}
Realizatori:
Bojan RoxanaBretea Denisa Chereches LuanaChira Luiza Felecan Bianca Ranga Ramona
Grupa IV – Clasa Xd