This is an old revision of the document!
Gigel vrea sa se pregătească pentru examenul de la materia Programarea Calculatoarelor așa ca a intrat pe drive-ul seriei si si-a ales un subiect de acolo. După ce a citit subiectul, si-a dat seama ca ar trebuie sa se încălzească cu niște exerciții mai simple înainte de a trece la rezolvarea lui si treaba voastră este sa-l ajutați in rezolvarea acestor task-uri.
Urmăriți indicațiile din fișierul project.h si completați funcțiile notate cu TODO. In fișierul project.c se pot implementa si funcții adiționale.
Se da un vector cu n elemente numere întregi. Afișați produsul elementelor, mai puțin al elementului de pe poziția i, pe aceeași linie, separate prin spațiu într-un fișier text deja deschis pentru scriere. La final, treceți pe următorul rând.
Input:
1 2 3 4
Output:
24 12 8 6
Se da o matrice pătratica cu numere întregi. Sa se rotească matricea cu 90 grade la stânga si sa se întoarcă 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 întregi si k query-uri de forma <x1, y1, x2, y2>, unde x1, y1, x2, y2 sunt numere întregi, si reprezintă coordonate ale matricei. Se cere calcularea sumei elementelor dintre cele doua coordonate pentru fiecare query, si afișarea lor pe aceeași 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 îl alege, are de implementat o parte din sistemul dezvoltat de către compania de transport Uber.
Pentru a implementa acest sistem, Gigel trebuie sa declare următoarele structuri:
Mai departe, el trebuie sa implementeze doua funcții pentru alocarea dinamica a structurilor, una pentru alocarea unui șofer ce primește un număr de curse, iar cealaltă pentru alocarea unui vector de șoferi ce primește numărul de șoferi si numărul de curse pentru fiecare șofer într-un vector.
Pentru a-si putea pune in practica sistemul, Gigel trebuie sa citească datele șoferilor, însă acestea, din cauza sistemului, sunt salvate in fișiere binare. Astfel, el are de completat o funcție care primește un fișier binar deja deschis pentru citire si trebuie sa citească, in ordine:
Funcția va returna vectorul de șoferi, iar numărul de șoferi va fi returnat prin intermediul unui parametru.
Din motive de verificare ale datelor, Gigel are de implementat si o funcție pentru afișarea unui vector de șoferi. Acesta va trebui sa afișeze într-un fișier binar deschis pentru scriere toate datele șoferilor, in aceeași ordine ca si citirea:
In acest moment, Gigel, fiind puțin curios, dorește sa vadă care este angajatul cu cel mai bun rating mediu(suma număr stele / (număr curse total - anulate - in desfășurare). Așa ca el are de implementat o funcție care primește vectorul de șoferi si întoarce numele șoferului cu cel mai bun rating.
In acest moment, lui Gigel ii mai lipsește un singur lucru de la soluția lui: algoritmul de găsire al celor mai apropiați șoferi de o locație de start, așa ca voi îl veți ajuta sa completeze aceasta funcție, care primește vectorul de șoferi, locația de start, si numărul de șoferi care vor fi căutați, prin comparare cu distanta euclidiana.
Pentru a-si finaliza acest proiect, Gigel trebuie sa elimine datele șoferilor din memorie, astfel încât el are de implementat doua funcții: o funcție care eliberează memoria ocupata de către un șofer, iar alta care eliberează memoria ocupata de un vector de șoferi.
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 încărcata pe platforma de testare a temelor va fi următorul:
project.c
, include/project.h
.