This is an old revision of the document!
Gigel vrea sa sa se pregateasca pentru examenul de la materia Programarea Calculatoarelor asa ca a intrat pe drive-ul seriei si si-a ales un subiect de acolo. Dupa ce a citit subiectul, si-a dat seama ca ar trebuie sa se incalzeasca cu niste exercitii mai simple inainte de a trece la rezolvarea lui si treaba voastra este sa-l ajutati in rezolvarea acestor task-uri.
Urmariti indicatiile din fisierul project.h si completati functiile notate cu TODO. In fisierul project.c se pot implementa si functii aditionale.
Se da un vector cu n elemente numere intregi. Afisati produsul elementelor, mai putin al elementului de pe pozitia i, pe aceeasi linie, separate prin spatiu intr-un fisier text deja deschis pentru scriere. La final, treceti pe urmatorul rand.
Input:
1 2 3 4
Output:
24 12 8 6
Se da o matrice patratica cu numere intregi. Sa se roteasca matricea cu 90 grade la stanga si sa se intoarca noua matrice.
Input:
1 2 3 4 5 6 7 8 9
Output:
3 6 9 2 5 8 1 4 7
Se da o matrice de dimensiune n si m cu elemente intregi si k query-uri de forma <x1, y1, x2, y2>, unde x1, y1, x2, y2 sunt numere intregi, si reprezinta coordonate ale matricii. Se cere calcularea sumei elementelor dintre cele doua coordonate pentru fiecare query, si afisarea lor pe aceeasi linie.
Input:
3 4 1 2 3 4 5 6 7 8 9 10 11 12 3 1 2 2 2 2 2 3 2 0 0 2 2
Output:
13 33 54
Pentru subiectul pe care Gigel il alege, are de implementat o parte din sistemul dezvoltat de catre compania de transport Uber.
Pentru a implementa acest sistem, Gigel trebuie sa declare urmatoarele structuri:
Mai departe, el trebuie sa implementeze doua functii pentru alocarea dinamica a structurilor, una pentru alocarea unui sofer ce primeste un numar de curse, iar cealalta pentru alocarea unui vector de soferi ce primeste numarul de soferi si numarul de curse pentru fiecare sofer intr-un vector.
Pentru a-si putea pune in practica sistemul, Gigel trebuie sa citeasca datele soferilor, insa acestea, din cauza sistemului, sunt salvate in fisiere binare. Astfel, el are de completat o functie care primeste un fisier binar deja deschis pentru citire si trebuie sa citeasca, in ordine:
Functia va returna vectorul de soferi, iar numarul de soferi va fi returnat prin intermediul unui parametru.
Din motive de verificare ale datelor, Gigel are de implementat si o functie pentru afisarea unui vector de soferi. Acesta va trebui sa afiseze intr-un fisier binar deschis pentru scriere toate datele soferilor, in aceeasi ordine ca si citirea:
In acest moment, Gigel, fiind putin curios, doreste sa vada care este angajatul cu cel mai bun rating mediu(suma numar stele / (numar curse total - anulate - in desfasurare). Asa ca el are de implementat o functie care primeste vectorul de soferi si intoarce numele soferului cu cel mai bun rating.
In acest moment, lui Gigel ii mai lipseste un singur lucru de la solutia lui: algoritmul de gasire al celor mai apropiati soferi de o locatie de start, asa ca voi il veti ajuta sa completeze aceasta functie, care primeste vectorul de soferi, locatia de start, si numarul de soferi care vor fi cautati, prin comparare cu distanta euclidiana.
Pentru a-si finaliza acest proiect, Gigel trebuie sa elimine datele soferilor din memorie, astfel incat el are de implementat doua functii: o functie care elibereaza memoria ocupata de catre un sofer, iar alta care elibereaza memoria ocupata de un vector de soferi.
TOTAL: 50p
Tema va fi trimisă folosind V2.vmchecker, cursul Programarea Calculatoarelor (CB & CD).
Găsiți arhiva cu checker-ul si scheletul temei aici.
Formatul arhivei care va fi incarcata pe platforma de testare a temelor va fi următorul:
project.c
, include/project.h
.