Pagini: 1 [2] 3   În jos
  Imprimă  
Ajutor Subiect: 479 Paritate  (Citit de 18180 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #25 : Februarie 14, 2008, 20:18:53 »

Poate bulesc si eu ceva la citire .. Neutral dupa ce am citit caracter cu caracter ( incorect pe toate testele ) am incercat fgets.

Cod:
	fgets(line,4800000,stdin);
int i=0;
while (line[i]!='\n' && line[i]!='\0')

Stiind sigur ca i e multiplu de 8 in while, isi poate da cineva seama daca de aici s-ar putea trage sigsecv ?
Memorat
savim
Nu mai tace
*****

Karma: 194
Deconectat Deconectat

Mesaje: 333



Vezi Profilul
« Răspunde #26 : Februarie 14, 2008, 20:20:04 »

Sa nu fi declarat limita prea mica la vector(sau sa-l fi facut prea mare)...ca daca te duci aiurea in momerie iei sigsegv.
Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #27 : Februarie 14, 2008, 20:21:15 »

Se poate din cauza ca e prea mare ? M-as mira..

[L.E.] am taiat un 0 la marimea vectorilor si am scapat de sigsecv  Yahoo!. acum am incorect   Fighting
Memorat
savim
Nu mai tace
*****

Karma: 194
Deconectat Deconectat

Mesaje: 333



Vezi Profilul
« Răspunde #28 : Februarie 14, 2008, 20:24:58 »

Da, mi s-a intamplat, eu am rezolvat problema cu un vector de 100000, de tip char. Hm...daca iei incorect cu citirea caracter cu caracter, poate bagi limita prea mare la fgets...

Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #29 : Februarie 14, 2008, 21:07:33 »

Pot primi si eu un test oficial .. la mine merg toate testele, iar pe oficiale primesc incorect. Nu sunt sigur daca ar trebui sa ma uit la algoritm, la citire, sau la scriere Neutral
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #30 : Februarie 14, 2008, 21:38:14 »

Pai vezi pe www.olimpiada.info. Am impresia ca sunt aceleasi teste ca la oji.  Thumb up
Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #31 : Februarie 14, 2008, 22:05:53 »

Le-am luat, multumesc .. faptul ca sunt de a 9-a si ma chinui lea ea de cateva ore imi da de gandit   Embarassed

Gata, am reusit. Problema era la lungimea stringului..
« Ultima modificare: Februarie 17, 2008, 11:50:13 de către AleX Pana » Memorat
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #32 : Februarie 15, 2008, 12:12:07 »

Testul 6 oficial de pe olimpiada.info are 336.520 de caractere, iar testele 7 si 9 au peste 450.000 de caractere...limita fiind de 60.000...e destul de clar de ce mie imi busea...in orice caz..nu mi se pare corect  Mad

[L.E.]: in enunt 60.000 se refera la numarul de caracter din textul final, rezulta ca pot fi pana la 480.000 de caractere in fisierul de intrare. Ar fi foarte bine daca s-ar modofica enuntul astfel incat sa se inteleaga corect problema.
« Ultima modificare: Februarie 15, 2008, 12:25:14 de către Radu Zernoveanu » Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #33 : Februarie 15, 2008, 13:43:40 »

Citat
Textul transmis are cel mult 60000 caractere.

S-a mai discutat, sunt de acord cu tine.
Prin 60 000 de caractere se refera la 60 000 de octeti... deci pune 60000*8.

Cam neclar intr-adevar... si '0' si '1' sunt caractere.
Memorat
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #34 : Martie 30, 2008, 11:34:58 »

Aceiasi problema problema asta nu are nimik diferit de aia de la oji si am evaluat sursa mea pe evaluatoru de la oji si am luat 100 de p si aici 0 p imi spune incorect...
Cod:
#include<fstream>
using namespace std;
int main()
{int k,ok,n[10],s,y,j;
char c,b,fals[60000000];
long i,z,ultimul=0;

ifstream fin("paritate.in");
ofstream fout("paritate.out");

ok=1;j=0;z=0;
fin.get(c);

while(c!='\n')
  {s=0;
   for(i=1;i<=7;i++){fin.get(b);
     n[i]=(char)b;
     if(n[i]==49)s=s+1;

     }

    if(s%2==0) {if(c=='0')ok=1;
    else  ok=0;
}

  else { if(c=='1')ok=1;
else  ok=0;
}


    if(ok==0){fals[z]=1;
      z++;
      j=1; ultimul=z;
      }
      else{
   y=0;k=6;
   for(i=1;i<=7;i++)
     {if(n[i]==49)if(k==6)y=y+(1*(2*2*2*2*2*2));
    else if(k==5) y=y+(1*(2*2*2*2*2));
else if(k==4) y=y+(1*(2*2*2*2));
  else if(k==3) y=y+(1*(2*2*2));
else if(k==2) y=y+(1*(2*2));
       else if(k==1) y=y+(1*2);
else y=y+1;
     k--;
      }

   fals[z]=y;
   z++;
   }
    fin.get(c);
    }


     



if(j){fout<<"NU"<<'\n';
for(i=0;i<=ultimul;i++)if(fals[i]==1) fout<<i<<" ";

}
   else{fout<<"DA"<<'\n';

for(i=0;i<z;i++) fout<<fals[i];

}


fin.close();
fout.close();
return 0;
}

Editat de moderator: Nu posta de 2 ori consecutiv pe aceeasi tema. Editeaza mesajul anterior.
« Ultima modificare: Martie 30, 2008, 11:47:35 de către Stefan Istrate » Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #35 : Martie 30, 2008, 17:05:52 »

Cod:
char fals[60000000];

depasesti memoria. acolo ai declarat 120MB
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #36 : Martie 30, 2008, 17:11:10 »

Vreau sa te intreb ceva am acolo in cerinta spune ca in fisierul de intrare exista o singura linie si se termina cu \n si eu fac citirea pana la \n si imi da time limit exces dupaia fac while(fin.get(c)) si acu nu imi mai da time limit exces dar imi zice incorect ......
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #37 : Martie 30, 2008, 17:31:35 »

fa un debug pe exemplu sau pe un test cu input mai mare. vezi daca iti citeste corect sirul. in principiu merge ce ai spus tu. poti sa incerci si urmatorul cod:

Cod:
fin>>c;
do{
//programul tau
fin>>c;
while (c!='\n');
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #38 : Martie 30, 2008, 18:08:27 »

deci uitete si tu cu \n acu am schimbat ce ai zis tu si uite ce mesaje imi da

Test    Timp executie    Memorie folosita    Mesaj    Punctaj/test    Punctaj/grupa
1   20ms   368kb   Killed by signal 11(SIGSEGV).   0   0
2   24ms   368kb   Killed by signal 11(SIGSEGV).   0
3   20ms   372kb   Killed by signal 11(SIGSEGV).   0
4   24ms   376kb   Killed by signal 11(SIGSEGV).   0   0
5   24ms   372kb   Killed by signal 11(SIGSEGV).   0
6   24ms   376kb   Killed by signal 11(SIGSEGV).   0
7   24ms   364kb   Killed by signal 11(SIGSEGV).   0
8   20ms   372kb   Killed by signal 11(SIGSEGV).   0   0
9   44ms   368kb   Killed by signal 11(SIGSEGV).   0
10   20ms   376kb   Killed by signal 11(SIGSEGV).   0
Punctaj total   0

si doar sursa mea a luat 100 de puncte pe evaluatorul de la oji .. Fighting Fighting deja disper eu totusi cred ca testele de aici nu se termina cu '\n'

baga te rog id meu in lista ta ca sa vb  pls marius_bv21
« Ultima modificare: Martie 31, 2008, 17:32:24 de către Popescu Marius » Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #39 : Martie 30, 2008, 20:06:56 »

functia get 'sare' peste '\n'.
am tot incercat sa schimb lucruri "dubioase" din sursa ta... nu imi dau seama din ce cauza iei 'incorect', dar am o observatie:

Cod:
	   if(k==6)y=y+(1*(2*2*2*2*2*2));
    else if(k==5) y=y+(1*(2*2*2*2*2));
else if(k==4) y=y+(1*(2*2*2*2));
  else if(k==3) y=y+(1*(2*2*2));
else if(k==2) y=y+(1*(2*2));
       else if(k==1) y=y+(1*2);
else y=y+1;
poate fi rescrisa ca
Cod:
 y = y+(1<<k) 

Incearca sa rescrii sursa de la 0. eu asa fac cand nu ma prind de buguri
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #40 : Martie 31, 2008, 09:15:00 »

1<<k inseamana cumva 2 la puterea k ?? ? cred ca da....  dar oricum nu cred ca asta ar fi greseala :d ms pentru sfat
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #41 : Martie 31, 2008, 10:51:43 »

Da.

Cod:
(1<<k) este 2^k
Memorat

vid...
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #42 : Martie 31, 2008, 21:40:31 »

problema asta a mai fost data la ACM Varna 1992 (din intamplare am gasit-o intr-o culegere acum trei zile Very Happy)

asta ca o simpla curiozitate
Memorat
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #43 : Aprilie 03, 2008, 16:49:05 »

Am refacut pr si am luat numai 60 de p .. iau pe testu 5 6 7 incorect .. puteti sa imi spuneti si mie ce au diferit testele alea sau de ce ...
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #44 : Aprilie 03, 2008, 16:52:14 »

Am refacut pr si am luat numai 60 de p .. iau pe testu 5 6 7 incorect .. puteti sa imi spuneti si mie ce au diferit testele alea sau de ce ...

De ce nu iti iei testele oficiale si sa verifici singur? Chiar nu cred ca cineva poate ghici ce greseala ai tu in cod.
Memorat

vid...
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #45 : Aprilie 03, 2008, 16:55:42 »

Gata am gasit eroarea am luat 100 de p
Memorat
zbarni
Strain


Karma: 3
Deconectat Deconectat

Mesaje: 23



Vezi Profilul
« Răspunde #46 : Decembrie 17, 2008, 16:02:33 »

E ceva interesant la aceasta problema: singur, am luat 30 de puncte, apoi am trimis solutia oficiala de la judeteana.. si a luat 0 puncte. Poate cineva sa ma ajute?Smile
Memorat
cosmin79
Strain
*

Karma: 36
Deconectat Deconectat

Mesaje: 46



Vezi Profilul
« Răspunde #47 : Iunie 25, 2009, 22:31:06 »

Salut.Am incercat sa fac si eu problema asta,dar iau incorect pe 4 teste.Testele sunt cele de la oji?Am incercat toate testele de la oji si imi merg.Am incercat sa fac citirea si cu fgets si caracter cu caracter,dar oricum ar fi raman incorecturile,deci nu cred ca-i de la citire.Ce ar putea fi?  Confused
Memorat
gabor_oliviu1991
Nu mai tace
*****

Karma: 28
Deconectat Deconectat

Mesaje: 200



Vezi Profilul
« Răspunde #48 : Iunie 25, 2009, 23:38:23 »

M-am uitat peste evalu' de la sursa ta. Si eu aveam aceleasi teste pe care nu mergea. Eu dupa ce citesc paritatea unei secvente de 7 biti care urmeaza si verific daca nu e '\n', iar daca e bag un break; . Prima varianta care nu a mers era ca citeam cei 8 biti dintr-o secventa si dupa o procesam (daca primu bit era '\n' imi procesa niste informatii aiurea). Bafta! Thumb up
Memorat
cosmin79
Strain
*

Karma: 36
Deconectat Deconectat

Mesaje: 46



Vezi Profilul
« Răspunde #49 : Iunie 26, 2009, 10:19:08 »

Poti sa fii putin mai explicit? Uite cum fac eu citirea caracter cu caracter:
Cod:
while (scanf("%c",&x)!=EOF)
{
if (r==8)
{
caractere++;
rezolva();
r=0;
}
if ((int)x>=48 && (int)x<=49)
{
v[++r]=x-'0';
continue;
}
else
continue;
}
if (r)
{
caractere++;
rezolva();
}

Foloseste tag-ul [ code ] cand postezi cod.
« Ultima modificare: Iunie 26, 2009, 10:39:33 de către Paul-Dan Baltescu » Memorat
Pagini: 1 [2] 3   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines