infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Jack ONeill din Februarie 04, 2015, 09:13:53



Titlul: Program de detectat erori
Scris de: Jack ONeill din Februarie 04, 2015, 09:13:53
Salutare!
Daca am un program care imi cere sa calculez suma a doua numere de tip int iar rezultatul depaseste tipul int imi da o eroare (presupun ca si suma este declarata tot ca int) sau daca trebuie sa citesc de la tastatura dimensiunile unei matrici iar mai apoi programul sa construiasca o anume matrice si eu introduc doua dimensiuni negative imi da o eroare. Intrebarea mea este daca pot face un program in C care sa imi detecteze acest tip erori si sa afiseze pe ecran pur si simplu "Eroare"?
Multumesc :)


Titlul: Răspuns: Program de detectat erori
Scris de: Duta Vlad din Februarie 04, 2015, 09:51:05
Pe scurt: nu.

Pentru prima intrebare: overflow-ul nu este perceput ca o eroare, procesorul aduna bit cu bit pana cand se termina toti bitii fara sa aiba vreo informatie despre tipul de date. Dar este foarte usor sa tratezi astfel de cazuri.

Pentru a 2-a intrebare: in cazul unei situatii de tipul array[-1] ("array out of bounds") C-ul are un comportament nedefinit (pur si simplu se acceseaza o zona de memorie aiurea dupa care se poate intampla orice). C++ iti ofera posibilitatea de a trata exceptiile intr-un mod mai organizat (try...catch), dar este tot datoria ta sa le detectezi/anticipezi.