infoarena

Comunitate - feedback, proiecte si distractie => Feedback infoarena => Subiect creat de: Macarescu Sebastian din Noiembrie 30, 2010, 23:57:35



Titlul: Ciudatenii si vrajitorii( c++ )
Scris de: Macarescu Sebastian din Noiembrie 30, 2010, 23:57:35
Nu stiam exact unde sa postez de aceea rog sa fie mutat subiectul daca e gresit.
Vroiam sa va cer opinia in legatura cu urmatoarea problema.
La problema http://infoarena.ro/problema/sprim (http://infoarena.ro/problema/sprim) sursa asta http://ideone.com/vcd5u (http://ideone.com/vcd5u)
ia 100 puncte pe cand http://ideone.com/mrxG0 (http://ideone.com/mrxG0) 0 cu sigsegv 11 desi difera prin
Cod:
bool c[1000001];
vector pe care nu il folosesc deloc. Cel mai ciudat e ca si pe ideone si pe ia primeste signal 11. Nu imi dau seama care e cauza.


Titlul: Răspuns: Ciudatenii si vrajitorii( c++ )
Scris de: Tache Alexandru din Decembrie 01, 2010, 08:51:52
Pai in primul rand tu accesezi elemente din afara vectorului:
Cod:
for(i=2;i*i<=1100000;i++)
                if(!v[i])
Acuma din cauza ca tu mai ai o zona de memorie nealocata imediat dupa v programul tau nu  va accesa o zona de memoria alocata ci elemente din vectorul c . Faza e ca acest comportament nu e specificat in standarul C deci depinzand de compilator programul poate sa ruleze sau sa ia kbs 11( cum ar fi normal ) .


Titlul: Răspuns: Ciudatenii si vrajitorii( c++ )
Scris de: Macarescu Sebastian din Decembrie 01, 2010, 10:45:39
Stiam ca acesez elementele din afara vectorului dar nu trebuia sa iau 100 pt nici cu declaratia vectorului c.Nu stii un link unde este descrisa aceasta chestie mai bine?