Problema [Lectia 5] PROIECT INFORMATICA

Post on 28-Jan-2016

87 views 0 download

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

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