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:
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");
}
Qualche suggerimento?
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?