Il titolo è abbastanza esplicativo![]()
Sto facendo un esercizio con i puntatori. Prendo in input una serie di interi e poi voglio stampare, per ogni intero, il suo elevamento al quadrato.
Però se inserisco, per esempio, dimensione 4, mi stampa le potenze dei primi 3 numeri e l'ultimo no. Stessa cosa per dimensioni diverse. Mi stampa tutte le potenze tranne l'ultimo e non riesco a capire il perchè.
Avevo provato a fare la funzione potenza in modo ricorsivo, ma non ci sono riuscito, mi dava lo stesso errore però, quindi se riesco a capire dove sbaglio provo a rifarla
, poi ho letto in una discussione qui sul forum che la funzione potenza è meglio farla iterativa, visto che la ricorsiva non presenta grandi vantaggi.
Comunque, questo è il codice:
Qualche suggerimento?codice:#include <stdio.h> #include <stdlib.h> void potenza(int *p, int dim){ int i; for(i=0; i<dim; i++){ p[i]=p[i]*p[i]; } } int main(){ int *p, i, dim; printf("Inserisci la dimensione del vettore: "); scanf("%d", &dim); p=(int *)malloc(dim*sizeof(int)); printf("Inserisci un numero:\n"); for(i=0; i<dim-1; i++){ scanf("%d ", (p+i)); } potenza(p, dim); printf("Numeri elevati a potenza:\n"); for(i=0; i<dim-1; i++){ printf("%d ", *(p+i)); } system("PAUSE"); }![]()
Tra l'altro ho un dubbio teorico: in questo esercizio uso un array di puntatori giusto? Visto che faccio l'allocazione dinamica. O forse ho detto una castroneria?![]()


, mi dava lo stesso errore però, quindi se riesco a capire dove sbaglio provo a rifarla
, poi ho letto in una discussione qui sul forum che la funzione potenza è meglio farla iterativa, visto che la ricorsiva non presenta grandi vantaggi.
Rispondi quotando