PDA

View Full Version : Potreste controllare se è giusto 2


M86
02-03-2003, 13:09
Potreste controllare se ho svolto bene questi esercizi?


Esercizio 3.19
Quali delle seguenti definizioni non sono valide? Perche? Come si possono correggere?
(a) int ival = 1.01; (b) int &rval1 = 1.01;
(c) int &rval2 = ival; (d) int &rval3 = &ival;
(e) int pi = &ival; (f) int &rval4 = pi;
(g) int &rval5 = pi; (h) int &*prval1 = pi;
(i) const int &iva!2 = 1; (j) const int &*prval2 = &ival;
Esercizio 3.20
Date k definizioni precedenti. quali dei seguenti assegnamenti non sono validi?
(a) rval1 = 3.14159;
(b) prval1 = prval2;
(c) prval2 = rval1;
(d) *prval2 = ival2;
Esercizio 3.21
Ouali sono le differenze tra le definizioni in (a) e tra gli assegnamenti in (b)? Quali sono illegali?
(a) int ival = 0;
const int *pi = 0;
Const int &ri = 0;
(b) pi = &ival;
ri = &ival;
pi = &rval;
Esercizio 3.22
Quali delle seguenti definizioni di array sono illegali? Spiegate perchè.
int get_size();
int buf_size = 1024;
(a) int ia[ buf_size ];
(b) int ia[ get_size() ];
(c) int ia[ 4 * 7 - 14 ];
(d) int ia[ 2 * 7 - 14 ];
(e) char st[ 11 ]= "fundamental";
Esercizio 3.23
Questo frammento di codice intende inizializzare ogni elemento di un array con il valore del suo indice, ma contiene alcuni errori di indicizzazione. Identificateli.
int main() {
const int array_size = 10; int ia[ array_size ];
for ( int ix = 1; ix <= array_size; ++ix ) ia [ix] = ix;




3.19
a)Non valida, 1.01 non è int, ival=1
b)Non valida, un alias ammette di essere inizializzato solo con una variabile dello stesso tipo che è stato dichiarato essere quello dell’alias , double &rval1=1.01
c)Ival non è di tipo int, double &rval2=ival
d)Non valido, non è né un puntatore né un array; per trasformarlo in alias: &rval3=ival
e)Non valido, il simbolo “indirizzo di” va a sinistra dell’uguale, double &pi=ival
f)Non valido, diventa valido nel caso sia valido anche “E” a patto che l’alias sia double
g)vedere “F”
h)valido se pi fosse corretto (ma si indica così un puntatore ad alias?)
i)valido
j)Non valido, questo è un puntatore ad alias di tipo int costante e ival non è ne’ costante, ne’ un puntatore,
int zxc=1
const int &ival=zxc
const int &*prval2=&ival (ma non ne sono tanto sicuro)

3.20
a)Non valido
b)Non valido
c)Valido
d)Valido

3.21
a)Inizializza un oggetto, una costante puntatore a nessun oggetto, assegnazione non valida: un alias deve essere inizializzato con un oggetto
b)pi punta ad ival, non valido tenta di modificare l’oggetto a cui ri fa da alias, cosa già di per sé non valida, trattando per di più ri come un puntatore


3.22
a)illegale, l’array è inizializzato con un oggetto non const
b)illegale, (so che è così perché lo segnalava come errore il libro stesso in un esempio)
c)valido
d)non valido, non si può inizializzare un array di zero elementi
e)non valido, l’array richiede un elemento in più visto che alla stringa va aggiunto il carattere nullo di terminazione

3.23
int main() {
const int array_size=10;
int ia[array_size];
for (int ix=0; ix<array_size; ++ix)
ia[ix-1]=ix
delete ix2


A proposito dei presunti errori di questo libro vi cito un frammento che descrive con un esempio la corretta procedura per inizializzare le variabili di un Array con il loro indice

int main()
{
const int array =10 ;
int ia[array_size] ;
for (int ix=0; ix<array size; ++ix)
ia[ix]=ix}


c’è secondo me un errore: dopo l’esecuzione ++ix
ia[ix] non mi fa agire sulla prima variabile dell’array ma sulla seconda e quindi quando va a inizializzare l’ultima variabile dell’array va fuori di 1

e un errore del genere lo fa anche quando presente un programmino per copiare gli elementi di un array in un altro array

M86
03-03-2003, 13:00
nessuno può aituarmi???