[so] [TEMA 5] eroare in functia check_ram din test.c

Ionutz uvinrg at gmail.com
Sun Feb 11 10:09:48 EET 2007


Salut. Am o eroare ciudate in test.c folosit de voi pentru a corecta tema 5,
in functia check_ram.... Deci:

static void check_ram (size_t offset, size_t ppages, size_t checks)
{
    size_t i, j;
    size_t read_val;
    int exp_val;
    int check = 1;

    for (i = 0; i < ppages; i++) {
        lseek (ram_fd, i * p_sz + offset, SEEK_SET);
        for (j = 0; j < checks; j++) {
            exp_val = (i << 16) | (offset + j * 4);
            read (ram_fd, &read_val, 4);

            printf("exp:%d read:%d
%d\n",exp_val,read_val,exp_val!=read_val);    //!!!!!!!!!!!!!!!!!!

            if (exp_val != read_val)  //!!!!!!!!!!!
            {
                printf("EROARE!\n"); //!!!!!!!!!!!!
                check = 0;
            }
            /* you gotta love them binary ops :-D */
            /* check &= !(exp_val ^ read_val); */
        }
    }

    test ("check_ram", check);
}

Outputul testului este:

exp:660 read:660 1
EROARE!
exp:664 read:664 1
EROARE!
exp:668 read:668 1
EROARE!
exp:66196 read:66196 1
EROARE!
exp:66200 read:66200 1
EROARE!
exp:66204 read:66204 1
EROARE!
exp:131732 read:131732 1
EROARE!
exp:131736 read:131736 1
EROARE!
exp:131740 read:131740 1
EROARE!
test: check_ram...................................................failed


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
????

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!

Ionut Ursachi
342CA

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!)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20070211/f58bd0b6/attachment.htm


More information about the so mailing list