Why I'm doing is base on this question:
Write a C program that accepts two item’s weight (floating points' values ) and number of purchase (floating points' values) and calculate the average value of the items.

I change a little so that it can accept any amount of item's weight and key in those variable after the code run.


this is the code with two function but I is not working:
Code:
#include<stdio.h>


float average(int x, int *Item, float *Weight){
    float sum;
    int count;


    for(int a=0;a<x;a++){
        sum+=(Item[a])*(Weight[a]);
        count+=Item[a];
    }
    printf("%f\n",sum);
    printf("%d\n",count);
    
    return sum/count;


}


int main(){
    int num;


    printf("number of type: ");
    scanf("%d",&num);


    int num_item[num];
    float weight[num];




    for(int i=1;i<=num;i++){
        printf("No. of item%d: ",i);
        scanf("%d",&num_item[i-1]);


        printf("Weight of item%d: ",i);
        scanf("%f",&weight[i-1]);
    }


    float av=average(num,num_item,weight);
    


    printf("Average Value = %f",av);


    return 0;
}
After I combine two function into one function, I just work perfect.
Code:
#include<stdio.h>


int main(){
    int num;
    float sum;
    int count;
    


    printf("number of type: ");
    scanf("%d",&num);


    int num_item[num];
    float weight[num];




    for(int i=1;i<=num;i++){
        printf("No. of item%d: ",i);
        scanf("%d",&num_item[i-1]);


        printf("Weight of item%d: ",i);
        scanf("%f",&weight[i-1]);
    }
    
    for(int a=0;a<num;a++){
        sum+=(num_item[a])*(weight[a]);
        count+=num_item[a];
    }
    printf("%f\n",sum);
    printf("%d\n",count);


    float average=sum/count;


    printf("%f\n",average);
    


    return 0;
}
I don't know what is the problem for the first code, can someone help me?