Nu aveti permisiuni pentru a descarca fisierul grader_test4.ok
Diferente pentru blog/buguri-frecvente intre reviziile #26 si #14
Nu exista diferente intre titluri.
Diferente intre continut:
Se apropie ONI sicred ca e utila o lista cu buguri frecvente.Sohereitgoes:
Se apropie ONI si m-am gandit ca e utila o lista cu buguri frecvente in concursurile de programare.
* *Probleme in timpul implementarii:*
**greseli la copy paste.** inversareaindicilorlaiterareauneimatrici (a[j][i]).**punct si virgula la final de linie dupa un for.for(i = 0; i < n; i++);cevacodcaresevaexecutadoarodata** refolosirea unui indexin interiorul unor foruri imbricate
** inversarea coordonatelor unei matrici a[j][i]
** functia % nu functioneaza exact la fel cu functia modulo din matematica. Astfel daca scazi numere modulo X poti ajunge la resturi negative (caz frecvent: hashing pe string-uri)
** Punct si virgula la final de linie dupa un for
for(i = 0; i < n; i++);
ceva cod
** refolosirea unui index
for (i = 0; i < n; i++) for (i = 0; i < m; i++) // i in loc de j ** folosirea lui = in locul lui ==
** comparare de stringuri cu == in loc de strcmp** functia % nu functioneazaca functiamodulo din matematica. Astfeldaca scazi numeremodulo X potiajunge laresturinegative. Sunt gasite de obicei la depanare. **Probleme cumemoria:***variabileneinitializate.**array-uridedimensiunede preamica.** off by oneerrors. Datelepornescdela0sau 1?Sunt de greu de gasit. **Problemecutipuri de date:***folosirede tipuripreamici (ex. intin loc delong long sau float in loc dedouble).** problemecutipurileintermediare._gresit:_int a, b;long long c =a* b; // c va avea valoareaunuiint_corect:_longlongc = ((longlong)a)*b;_gresit:_double half = 1 / 2;_corect:_ double half = 1.0 / 2;
** comparare de stringuri cu \=\= in loc de strcmp Ele sunt gasite de obicei la depanare. * Probleme cu memoria: ** variabile neinitializate - cand programul are comportament diferit la rulari diferite, una dintre probleme ar initializarea variabilelor. ** declarat array-uri de dimensiune de prea mica ** off by one errors, frecvent apar probleme cu datele pornind de la 0 sau 1 Destul de greu de gasit. * Probleme cu tipuri de date: ** folosire de tipuri prea mici de exemplu int in loc de long long sau float in loc de double ** probleme cu tipurile intermediare gresit: int a, b; long long c = a * b; // c va avea valoarea unui int corect: long long c = ((long long) a) * b; gresit: double half = 1 / 2; corect: double half = 1.0 / 2 sau
Foarte frustrante. Pierzi toate punctele pentru un algoritm aproape de forma corecta.
* *Intrare/Iesire:* ** fisier de intrare sau iesire gresit ca urmare a depanarii intermediare. ** formatarea gresita (cate un spatiu in loc de virgula, sau uiti ca trebuie sa returnezi rezultatul modulo X)
* Intrare/Iesire: ** fisier de intrare sau iesire gresit ** formatarea gresita (cate un spatiu in loc de virgula, sau mai stiu eu ce) ** uitat ca anumite probleme cer rezultatul modulo X
Le faci cand problema merge aproape perfect si te-ai grabit sa trimiti solutia.
**Greseli la algoritm:*
* Greseli la algoritm:
** incepatorii se arunca sa implementeze prima idee, inainte sa se asigure ca e corecta.
** graful nu e neaparat conex si toate exemplele au fost grafuri conexe. ** rezultatul are nevoie de numere mai mari decat poate reprezenta limbajul de programare.
** probleme pe cazuri extreme, mici: gen n = 1, 2 sau mari unde iesi din memorie. ** strlen(s) are complexitate O(n) nu O(1).
** rezultatul are nevoie de numere mai mari decat poate reprezenta limbajul de programare. ** graful nu e neaparat conex si toate exemplele au fost grafuri conexe.
Faceti o lista cu bugurile cu care v-ati intalnit ca sa va dati seama care sunt cele mai frecvente pentru voi. In concursurile online e foarte utila o asemenea lista.
Voua ce buguri v-au dat dureri de cap?
Diferente intre securitate:
protected
private
Diferente intre topic forum:
7529
