Я пытаюсь отсканировать два вектора ввода с клавиатуры, а затем создать функцию, которая будет возвращать скалярное произведение двух векторов. Однако, когда я запускаю программу, как только она сканирует первый вектор в первом цикле for, программа заканчивается, и скалярный продукт равен 0. Я не понимаю, почему он не позволяет мне сканировать второй вектор. Это мой код:
#include <stdio.h>
#include <stdlib.h>
double scalarproduct(double *v, double *w, int n){
double vw[n];
for(int i = 0; i < n; i++){
vw[i] = (v[i] * w[i]);
}
double scalprod = 0;
for(int i = 0; i < n; i++){
scalprod += vw[i];
}
return scalprod;
}
int main(){
int n;
scanf("%d", &n);
double *v;
v = (double *) malloc(sizeof(double) * n);
double *w;
w = (double *) malloc(sizeof(double) * n);
for(int i = 0; i < 0; i++){
scanf("%lf", &v[i]);
}
for (int i = 0; i < n; i++){
scanf("%lf", &w[i]);
}
printf("Scalar product=%lf\n", scalarproduct(v,w,n));
return 0;
}
Вот как должен выглядеть ввод:
3
1.1
2.5
3.0
1.0
1.0
1.0
Однако он позволяет вводить только до 3.0, а затем программа пропускает второй цикл forк заявлению на печать. Как я могу это исправить?