termozeta
03-08-2005, 14:31
Ciao a tutti,
ho 2 domande che sono sicuramente banalità ma al mio livello non molto.Spero che qualcuno abbia la pazienza di rispondermi.
1)quando si dichiara una classe si usa ,di solito,la direttiva
#ifndef NOMECLASSE
#define NOMECLASSE
class nomeclasse
{
….
}
#endif
sinceramente non ho capito l’utilità di dichiarare l’ifndef e poi il define visto che funziona tutto perfettamente lo stesso anche senza.Tra l’altro in alcuni programmi vi sono degli iteratori creati cosi’(prendetelo a titolo di esempio):
#define prova(e,g)
for((e.s)=1;(e.s)<=((G.getN());(e.s)++)\
for((e.f)=1;(e.f)<=((G.getN());(e.f)++)\
if(((G).get_edge((e)))!=1); else
questo iteratore viene ,poi,usato nel programma.... ma, senza badare allo specifico, mi potreste decifrare queste linee di codice con questo else appeso cosi’ nel vuoto?grazie a tutti
2) ho creato una funzione che legge da file una matrice pero’... cosi’ funziona tutto correttamente:
int *d;
d=new int[9];
for(int i=0;i<9;i++)//inizializzo d a tutti zeri
d[i]=0;
ifstream in("prova.row");
if(!in.is_open())
cout<<"it's impossible to open the file"<<endl;
else
{
for(int i=0;i<9;i++)
in>>d[i];
}
for(int i=0;i<9;i++)
cout<<d[i]<<endl;
in.close();
mentre cosi’ :
int *d;
d=new int[9];
for(int i=0;i<9;i++)
d[i]=0;
ifstream in("c:prova.row");
if(!in.is_open())
cout<<"it's impossible to open the file"<<endl;
else
in.read((char *)d,sizeof *d);
for(int i=0;i<9;i++)
{
cout<<d[i]<<endl;
}
in.close();
mette(solo nel primo elemento del vettore d gli altri restano a zero…) i valori ascii dei numeri (ossia se nel primo elemento della matrice avevo 1 mette in d[0] 49 ecc..) quale puo’ essere l’errore?grazie a tutti
ho 2 domande che sono sicuramente banalità ma al mio livello non molto.Spero che qualcuno abbia la pazienza di rispondermi.
1)quando si dichiara una classe si usa ,di solito,la direttiva
#ifndef NOMECLASSE
#define NOMECLASSE
class nomeclasse
{
….
}
#endif
sinceramente non ho capito l’utilità di dichiarare l’ifndef e poi il define visto che funziona tutto perfettamente lo stesso anche senza.Tra l’altro in alcuni programmi vi sono degli iteratori creati cosi’(prendetelo a titolo di esempio):
#define prova(e,g)
for((e.s)=1;(e.s)<=((G.getN());(e.s)++)\
for((e.f)=1;(e.f)<=((G.getN());(e.f)++)\
if(((G).get_edge((e)))!=1); else
questo iteratore viene ,poi,usato nel programma.... ma, senza badare allo specifico, mi potreste decifrare queste linee di codice con questo else appeso cosi’ nel vuoto?grazie a tutti
2) ho creato una funzione che legge da file una matrice pero’... cosi’ funziona tutto correttamente:
int *d;
d=new int[9];
for(int i=0;i<9;i++)//inizializzo d a tutti zeri
d[i]=0;
ifstream in("prova.row");
if(!in.is_open())
cout<<"it's impossible to open the file"<<endl;
else
{
for(int i=0;i<9;i++)
in>>d[i];
}
for(int i=0;i<9;i++)
cout<<d[i]<<endl;
in.close();
mentre cosi’ :
int *d;
d=new int[9];
for(int i=0;i<9;i++)
d[i]=0;
ifstream in("c:prova.row");
if(!in.is_open())
cout<<"it's impossible to open the file"<<endl;
else
in.read((char *)d,sizeof *d);
for(int i=0;i<9;i++)
{
cout<<d[i]<<endl;
}
in.close();
mette(solo nel primo elemento del vettore d gli altri restano a zero…) i valori ascii dei numeri (ossia se nel primo elemento della matrice avevo 1 mette in d[0] 49 ecc..) quale puo’ essere l’errore?grazie a tutti