Salut. Am o eroare ciudate in test.c folosit de voi pentru a corecta tema 5, in functia check_ram.... Deci:<br><br>static void check_ram (size_t offset, size_t ppages, size_t checks)<br>{<br> size_t i, j;<br> size_t read_val;
<br> int exp_val;<br> int check = 1;<br><br> for (i = 0; i < ppages; i++) {<br> lseek (ram_fd, i * p_sz + offset, SEEK_SET);<br> for (j = 0; j < checks; j++) {<br> exp_val = (i << 16) | (offset + j * 4);
<br> read (ram_fd, &read_val, 4);<br><br> printf("exp:%d read:%d %d\n",exp_val,read_val,exp_val!=read_val); //!!!!!!!!!!!!!!!!!!<br><div id="mb_0"> <br> if (exp_val != read_val) //!!!!!!!!!!!
<br> {<br> printf("EROARE!\n"); //!!!!!!!!!!!!<br> check = 0;<br> }<br> /* you gotta love them binary ops :-D */<br> /* check &= !(exp_val ^ read_val); */
<br> }<br> }<br><br> test ("check_ram", check);<br>}<br><br>Outputul testului este:<br><br>exp:660 read:660 1<br>EROARE!<br>exp:664 read:664 1<br>EROARE!<br>exp:668 read:668 1<br>EROARE!<br>exp:66196 read:66196 1
<br>EROARE!<br>exp:66200 read:66200 1<br>EROARE!<br>exp:66204 read:66204 1<br>EROARE!<br>exp:131732 read:131732 1<br>EROARE!<br>exp:131736 read:131736 1<br>EROARE!<br>exp:131740 read:131740 1<br>EROARE!<br>test: check_ram...................................................failed
<br><br><br>Deci, desi exp_val e 66204, read_val e tot 66204.....totusi
testul spune ca exp_val e DIFERIT de read_val..... Nu mai inteleg nimic.... Compara
ceva aiurea if-ul acela, de mie-mi pica testul desi valorile alea sunt
identice ???? <br><br>Va rog ajutati-ma, pentru ca azi e deadline-ul pentru teme,
dupa cum stii, si am verificat de 100 de ori tema si totul e ok, dar
mie-mi pica testele de check_ram, si probabil comparatia asta intre
doua valori identice pe care el le vede diferite e de vina. Multumesc!
<br><br>Ionut Ursachi<br>342CA<br><br>PS: Daca in loc de "size_t read_val;" pun "int read_val;", testul se executa corect. Va rog sa corectati testele cu int in loc de size_t peste tot, sau sa repuneti comparatia cum era initial check&=.....,pentru ca asa esueaza de fiecare data!!! (esueaza si pt size_t read_val comparat cu size_t exp_val....numai pt int read_val comparat cu int exp_val comparatia e corecta!)
<br><br></div>