Problema [Lectia 5] PROIECT INFORMATICA

16
Problema [Lectia 5] PROIECT INFORMATICA AUTOMOBILELE Grupa IV

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 Presentation

Transcript of Problema [Lectia 5] PROIECT INFORMATICA

Page 1: Problema [Lectia 5]   PROIECT INFORMATICA

Problema [Lectia 5] PROIECT INFORMATICA

AUTOMOBILELEGrupa IV

Page 2: Problema [Lectia 5]   PROIECT INFORMATICA

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

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

CJ 27 ANA

BR 64 BICB 50 ABC CJ 65 IOA

CJ 84 TIM

Page 5: Problema [Lectia 5]   PROIECT INFORMATICA

CJ 94 BIA AR 44 KYA

CJ 63 THO

CJ 14 MIRCJ 22 TRI

Page 6: Problema [Lectia 5]   PROIECT INFORMATICA

CJ 55 AMK

B 24 KAL

CJ 52 ORW

SI 24 PRO

CJ 24 VIO

Page 7: Problema [Lectia 5]   PROIECT INFORMATICA

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

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

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

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

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

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

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

Exemplu pentru primele 4 masini:

Page 15: Problema [Lectia 5]   PROIECT INFORMATICA

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

Realizatori:

Bojan RoxanaBretea Denisa Chereches LuanaChira Luiza Felecan Bianca Ranga Ramona

Grupa IV – Clasa Xd