Tema 0: Parc Auto

Obiective

  • Înțelegerea conceptului de makefile
  • Înțelegerea operațiilor pe fișiere
  • Pregătirea setup-ului pentru realizarea temelor propuse la PA

Informații

  • Deadline hard, 27.03.2022 ora 23:59 (termen limită - nu se obţin puncte pe soluţiile trimise mai târziu)
  • Checker-ul offline îl puteţi descărca de aici
  • Informații despre ce este un makefile gasiți aici și aici
  • Setup-urile recomandate de către noi le găsiți aici

Descriere

Evolutia tehnologica a ajuns si la Parcul Auto ACS. Acestia au aflat ca sarcinile simple, repetite cat si statisticile pot fi facute de catre un program software fara sa mai fie nevoie de interventie umana. Ei te-au contactat pe tine pentru a le rezolva urmatoarele cerinte de business si a livra produsul mult dorit. Ce zici, te poti descurca???

Cerințe

  1. Sortarea in ordine aflabetica a masinilor.
  2. Afisarea unui invetar in functie de numarul de masini corespunzator fiecarei marci (Vezi sectiunea Exemplu).
  3. Realizarea unui demo al aplicatiei respectand urmatorii pasi:
    • Toate masinile a caror marca se regaseste in fisierul marci.in o sa fie vandute (eliminate din vector)
    • Masinile ramase in invetar (in vector) o sa fie scrise intr-un fisier de output
    • Pe ultima linie a fisierul o sa fie scris profitul total obtinut in urma vanzarii

Pentru a primi puncte pe tema trebuie sa lucrati cu fisiere (scrierea/citirea se face in/din fisier), nu se accepta solutii care nu folosesc operatii de lucru cu fisiere.

Pentru a tine evidenta masinilor este recomandat sa le stocati intr-un vector (alocat dinamic).

Pentru cerinta 1, daca 2 masini au aceeasi marca, atunci ele vor fi sortate in functie de model.

Daca doua masini au aceeasi marca si acelasi model, atunci sortarea se face dupa tokenMasina (acesta este unic pentru fiecare masina).

Punctaje si Detalii Tehnice

Punctaje:

  • Cerinta 1: 20%
  • Cerinta 2: 30%
  • Cerinta 3: 50%

Detalii Tehnice

  • Rezultate obtinute in urma executarii cerintelor vor fi scrise in fisierul rezultate.out
  • In fisier se afiseaza cate o masina pe linie.
  • Pentru cerinta 3 este nevoie sa modificati vectorul de la cerinta 1.
masina
typedef struct Masina
{
    char* marca;
    char *model;
    char tokenMasina[11];
    int pretAchizitie;
    int pretVanzare;
}Masina;

tokenMasina este un token unic pentru fiecare masina inregistrata in sistem.

Formula de calcul a profitului unei masini este: diferenta intre pretul de vanzare si pretul de achizitie.

Pentru rularea checker-ului trebuie sa aveti implementat un fisier makefile care are regulile de build si clean.

Exemplu

Fisierele folosite de checker arata astfel:

cerinte.in
1 1 0 //se executa primele 2 cerinte
date.in
Chevrolet Malibu fuvjx4hgj4 4236 4199 //Marca Model tokenMasina pretAchizitie pretVanzare
Chevrolet Silverado wjckx944uj 7693 7494
Ford Transit iumj7qirqq 3214 9045
Volvo 850 bv55fq9ewq 2640 13400
Toyota LandCruiser fdm98gbg9j 3358 8395
Chevrolet Silverado3500HD 98kskdu1cr 1570 11285
Toyota T100 0yi1ocmlxn 4156 8313
Toyota Avalon x8fu5lo3m9 8920 3916
Audi A8 340fvt339e 4720 7764
Ford Taurus sqaybhpqj4 3013 13071
Audi S7 2qyapt359a 5705 3122
Audi RS5 nj3l315y1x 3254 11875
Chevrolet Cavalier h2uwk5jfev 8632 10334
Suzuki SX4 ikn8ntwin4 2036 6299
Ford Econoline d71a92ggfp 6788 12876
Mercedes-Benz Mercedes-AMG yx6196wdcm 5032 3670
Mercedes-Benz E-Class k6xeulilfw 5390 3272
BMW M5 lce7r3xqpr 6919 8237
BMW 1Series c36jtvjrcu 9557 11029
Toyota Tundra xx4e32mtje 4739 7576
Audi A6 amsbl4aixl 5463 8885
Chevrolet Express2500 etxita8lic 3976 11103
Chevrolet Malibu q2dip9g0uy 7012 5473
Toyota Highlander wll61s7abu 1278 7862
BMW X5 ndizj7lng2 2168 14999
Ford Taurus 1yklhcll8a 3515 9764
BMW 3Series 61lxnbay0c 6692 13222
Subaru Outback z3bohgt66y 5152 14411
Toyota RAV4 3n6wpwsbqk 6415 7899
Chevrolet 3500RegularCab ynyb4usatm 8344 10074
Suzuki Esteem qqdl4gg4r3 6926 10475
Ford Fiesta dwhod1a3w5 9995 8986
Toyota Mirai zn7jpf4dgp 5806 8925
Subaru BRZ 0ibdu3n47t 2987 3046
Chevrolet Silverado3500RegularCab di5qz4ctha 6154 9158
Ford F150SuperCrewCab btvw4mv2sp 2881 13344
Suzuki Sidekick 7s0t39eqv4 6138 9737
Audi A3 wt98fnpsku 3816 8993
Volvo V40 foi01znl24 6604 12283
Chevrolet Suburban ke07khg1wn 4121 4704
BMW 3Series 8gwhddclcg 2940 14865
BMW 5Series 8fpkfs7s9d 6058 13860
Chevrolet S10RegularCab ej39lnz1yx 1959 4909
Mercedes-Benz SLK-Class 4mq9w00wct 9604 4864
Mercedes-Benz CLK-Class paau62q56q 1477 2391
BMW 3Series b9cjvyigx8 2537 8550
rezultate.out
Audi 5
BMW 7
Chevrolet 10
Ford 6
Mercedes-Benz 4
Subaru 2
Suzuki 3
Toyota 7
Volvo 2

Executabilul obținut în urma compilării va avea numele parcAuto, iar regula de rulare va fi:

./parcAuto cerinte.in date.in rezultate.out marci.in

main.c
int main(int argc, char *argv[] {
    //argc -> numarul de parametri
    //argv -> parametri
    //Folosindu-ne de conditia de executie prezentata mai sus =>
    //argv[0] = parcAuto -> numele executabilului
    //argv[1] = cerinte.in
    //argv[2] = date.in
    //argv[3] = rezultate.out
    //argv[4] = marci.in
    //Iar un fisier se deschide astfel:
    FILE *inputCerinte = fopen(argv[1], "r");
}

Reguli de trimitere

  • Puteţi încărca mai multe soluţii, se va lua în considerare ultima solutie incarcata, termen limita x
  • Arhiva temei va avea numele GrupaSerie_Nume_Prenume_TemaNr.zip și va fi încărcată pe moodle.
  • Arhiva trimisă conține (direct în rădăcină):
    1. Fişierul sau fişierele (.c si .h) cu codul programului;
    2. Makefile-ul (cu regulile make build și make clean). Executabilul generat trebuie să se numească parcAuto;

Restricții

  • Implementarea se va face folosind limbajul C;
  • Nu se acceptă implementări cu tipuri de date cu memorie alocată static (se acceptă numai variabile locale de tip buffer pentru stocare temporară înainte de alocare);
  • Se va depuncta lucrul nemodularizat (functii cu mai mult de 40 de linii). Implementarea temei se face folosind funcții ce au nume sugestive - Ex: ordonareInventarAlfabetic, calculProfit, stergereMasina, etc. Orice alte manipulări de date se fac, pe cat posibil, prin funcții specializate.
  • Memoria trebuie eliberată. Dacă nu se respectă această cerință depunctarea este de pana la 10/100 pct.
  • Menţineţi cel puţin un nivel minimal de aspect al codului şi evitaţi inconsistenţa (indentare haotică, numeroase combinaţii de caractere de tip „leading/trailing whitespace“, numirea variabilelor şi a funcţiilor în ordinea literelor din alfabet);
  • Se va depuncta cu pana 15% din punctajul obtinut implementarea care nu foloseste tipuri de date specifice pentru entitiatile din cerinta (ex: Masina)
sda-ab/tema0.txt · Last modified: 2022/03/13 22:17 by ruben_gilian.udroiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0