Salve, ho provato a svolgere questo codice con array di tipo int, ed è funzionante. Gli array di tipo double non riescono a riconoscere i numeri immessi in input; evidentemente sto facendo un errore madornale, ma non comprendo quale. Vi ringrazio anticipatamente per l'aiuto

codice:
#include <stdio.h> 
double prodotto(double a[], double b[], int n); 
main(){
 const int N=3;
 double a[N],b[N];
 int i;
 printf("inserire elementi primo vettore\n"); 
 for(i=0; i<N; i++){ 
  scanf("%g",&a[i]); 
}
printf("inserire elementi secondo vettore\n"); 
for(i=0; i<N; i++){
 scanf("%g",&b[i]); 
} 
/*stampo a video primo vettore*/
 for(i=0; i<N; i++){
 printf("%f ",a[i]); 
} 
/*stampo a video secondo vettore*/
 for(i=0; i<N; i++){
 printf("%f ",b[i]); 
}
 printf("prodotto elementi: %.2f\n", prodotto(a,b,N)); 
system("PAUSE"); } 
double prodotto(double a[], double b[], int n){
 int i;
 float p=0;
 for (i=0; i<n; i++){
   p+=(a[i]*b[i]);
 }
 return p;
 }