This shows you the differences between two versions of the page.
pa:skel_graph [2021/04/19 01:37] radu.nichita |
pa:skel_graph [2021/05/04 17:59] (current) miruna_elena.banu |
||
---|---|---|---|
Line 1: | Line 1: | ||
=== skel_graph === | === skel_graph === | ||
- | În continuare vom menționa câteva convenții/sfaturi/reguli pe care trebuie să le aveți în vedere pentru restul semestrului. Unele precizări sunt specifice laboratoarelor de grafuri, altele sunt generale. | + | În continuare, vom menționa câteva convenții/sfaturi/reguli pe care trebuie să le aveți în vedere pentru restul semestrului. Unele precizări sunt specifice laboratoarelor de grafuri, altele sunt generale. |
Line 15: | Line 15: | ||
- | În general când vorbim de muchii/arce, putem folosi următoarele notații: | + | În general, când vorbim de muchii/arce, putem folosi următoarele notații: |
- în grafuri **fără** costuri pe muchii: | - în grafuri **fără** costuri pe muchii: | ||
Line 38: | Line 38: | ||
Orice tablou (vector/matrice/multidimensional etc) se va aloca folosind una din următoarele variante: | Orice tablou (vector/matrice/multidimensional etc) se va aloca folosind una din următoarele variante: | ||
* pe ** heap **: se poate folosi ** vector ** / ** ArrayList ** sau ** new **. ** [C++] observație ** : adj[NMAX] este alocat tot pe heap, întrucât Task-ul este alocat pe heap (vezi în main) | * pe ** heap **: se poate folosi ** vector ** / ** ArrayList ** sau ** new **. ** [C++] observație ** : adj[NMAX] este alocat tot pe heap, întrucât Task-ul este alocat pe heap (vezi în main) | ||
- | Recomandam varianta cu **vector/ArrayList**. | + | Recomandăm varianta cu **vector/ArrayList**. |
Precizări: | Precizări: | ||
- | * Orice **abatere** de la aceste reguli va fi penalizată de checker, lucru asigurat prin testele mari (ultimele), care vor genera SEGFAULT dacă nu se respecta alocarea. | + | * Orice **abatere** de la aceste reguli va fi penalizată de checker, lucru asigurat prin testele mari (ultimele), care vor genera SEGFAULT dacă nu se respectă alocarea. |
* La **problemele bonus** care **NU au checker**, asistentul va depuncta manual astfel de probleme grave. În principiu, este permisă orice formă de alocare care suportă dimensiunile indicate in enunț. | * La **problemele bonus** care **NU au checker**, asistentul va depuncta manual astfel de probleme grave. În principiu, este permisă orice formă de alocare care suportă dimensiunile indicate in enunț. | ||
Line 48: | Line 48: | ||
[C++]: ** void f() { int v[n]; } ** (alocare de dimensiune variabila pe stiva), poate crăpa stiva! (n poate fi mare). **Interzicem** folosirea acestui tip de alocare **la PA**. Pentru acest exemplu, scheletul va genera și o eroare de compilare, pentru a vă atrage atenția că **NU** ar trebui să folosiți acest tip de alocare, dacă n poate să fie mare! (grafuri mari) | [C++]: ** void f() { int v[n]; } ** (alocare de dimensiune variabila pe stiva), poate crăpa stiva! (n poate fi mare). **Interzicem** folosirea acestui tip de alocare **la PA**. Pentru acest exemplu, scheletul va genera și o eroare de compilare, pentru a vă atrage atenția că **NU** ar trebui să folosiți acest tip de alocare, dacă n poate să fie mare! (grafuri mari) | ||
- | Observatie: Precizarile mentionate sunt valabile doar pentru contextul PA, unde facem algoritmi eficienti si care dorim sa mearga pe dimensiuni cat mai mari! Asta nu inseamna ca in alte contexte (ex. multi-threaded) nu poti folosi [[https://stackoverflow.com/questions/16672322/malloced-array-vs-variable-length-array/16672438#16672438 | VLA]] (variable length array on stack). | + | Observație: Precizările menționate sunt valabile doar pentru contextul PA, unde facem algoritmi eficienți și care dorim să meargă pe dimensiuni cât mai mari! Asta nu înseamnă că în alte contexte (ex. multi-threaded) nu se va putea folosi [[https://stackoverflow.com/questions/16672322/malloced-array-vs-variable-length-array/16672438#16672438 | VLA]] (variable length array on stack). |
Scopul acestui paragraf este să va atragă atenția asupra alocării corespunzătoare a datelor **la PA **, astfel încât să evitați erori de **run time** pe care să nu vi le puteți explica. | Scopul acestui paragraf este să va atragă atenția asupra alocării corespunzătoare a datelor **la PA **, astfel încât să evitați erori de **run time** pe care să nu vi le puteți explica. | ||
</note> | </note> | ||