Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Parsare cand citesc numere negative din fisier  (Citit de 3598 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« : Februarie 23, 2010, 10:37:51 »

Cum fac parsarea cand citesc numere negative din fisier?

Cod:

inline void cit(int &x)
{
x=0;
while(ax[pz]< '0' || ax[pz] > '9')
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;
while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;
}
}


Multumesc anticipat!

Later Edit:
Se poate mai bine de atat:
Cod:
inline void cit(int &x)
{   p=0;
x=0;
while((ax[pz]< '0' || ax[pz] > '9')&&(ax[pz]!='-'))
if(++pz==DIM) fread(ax,1,DIM,stdin),pz=0;

while((ax[pz]>='0' && ax[pz]<='9')||(ax[pz]=='-'))
{   if(ax[pz]!='-')
{x=x*10+ax[pz]-'0';

}
else
{p=1;

}
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;


}
if(p==1){
    p=0;
    x=x*(-1);
}

}
« Ultima modificare: Februarie 23, 2010, 15:27:35 de către Calin Dragos Ion » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #1 : Februarie 23, 2010, 15:58:03 »

Am o intrebare: cate numere negative ai de citit, adica imi poti da un exemplu de fisier de intrare?
Memorat
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #2 : Februarie 23, 2010, 20:15:35 »

Am o intrebare: cate numere negative ai de citit, adica imi poti da un exemplu de fisier de intrare?
Nu stiu pentru ca este vorba de citirea ponderilor muchiilor unui graf si unele pot fi negative altele nu.

Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #3 : Februarie 23, 2010, 20:22:54 »

Cod:
inline void cit(int &x)
{
        int semn = 1;
x=0;
while(ax[pz]< '0' || ax[pz] > '9')
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;
      
        if(ax[pz] == '-')
        {
                semn = -1;
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;
        }        

while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;
}
        x *= semn;
}
Am modificat fragmentul de cod postat mai sus astfel încât să citescă și numere negative. Smile
« Ultima modificare: Februarie 24, 2010, 15:26:20 de către Andrei Misarca » Memorat
chera_lary
De-al casei
***

Karma: -2
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« Răspunde #4 : Februarie 24, 2010, 15:16:02 »

Citeste toata linia in format char[], apoi imparti stringul cu strtok dupa spatii si aplici functia atoi.
Succes! Daca nu reusesti, postezi pe forum si am sa te ajut.
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #5 : Februarie 24, 2010, 23:38:56 »

cum face Mishu e mult mai bine Wink traiasca Gogu Tongue
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #6 : Februarie 25, 2010, 17:43:20 »

cum face Mishu e mult mai bine Wink traiasca Gogu Tongue

Oare toti folosim functia aia ?  Banana
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #7 : Februarie 25, 2010, 21:22:41 »

cum face Mishu e mult mai bine Wink traiasca Gogu Tongue
Cine-i Gogu? Think
Memorat
andrei-alpha
Client obisnuit
**

Karma: 103
Deconectat Deconectat

Mesaje: 91



Vezi Profilul
« Răspunde #8 : Februarie 25, 2010, 21:32:44 »

cum face Mishu e mult mai bine Wink traiasca Gogu Tongue
Cine-i Gogu? Think

El http://infoarena.ro/utilizator/gogu
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #9 : Februarie 25, 2010, 22:37:14 »

E o "ciucuiala" parsarea aia Smile.
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #10 : Februarie 25, 2010, 22:47:07 »

E "ciucuială", dar merge brici Very Happy
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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