Ragazzi,
questo listato deve stampare a video un vettore allocato dinamicamente con dei numeri, da scegliere tra unsigned short e float.
Vorrei capire perchè sono stati inseriti su questa riga
codice:
case 0: cout << *((unsigned short *)v+i)<< endl;
due puntatori e l'uso della parentesi tonda solo per unsigned short *,su questo ho pensato che per la precedenza tra operatori avrebbe preso solo unsigned short *v(senza considerare la i), ditemi voi se è giusto ,e poi perchè ha usato quell'altro puntatore prima di unsigned short?
Listati:
codice:
void leggi_vettore(void * & v, int n, int t) {
switch (t) {
case 0: v= new unsigned short [n]; break;
case 1: v= new float [n];break;
}
cout << "\n inserisci gli elementi del vettore: " << endl;
for(int i=0; i<n; i++) // basta un solo ciclo...
switch (t) {
case 0:
// for(int i=0; i<n; i++) ...in alternativa
cin >> *((unsigned short *)v+i); break;
case 1:
// for(int i=0; i<n; i++) ...in alternativa
cin >> *((float *)v+i);break;
}
}
void stampa_vettore(void* v, int n, int t){
cout << "\n stampa degli elementi del vettore: " << endl;
for(int i=0; i<n; i++)
switch (t) {
case 0: cout << *((unsigned short *)v+i)<< endl;
break;
case 1: cout << *((float *)v+i)<< endl;
break;
}