Не вызывается функция на С

Реализую код, который генерирует одномерный массив случайных чисел, считает среднее арифметическое массива, а потом находит отклонения, возводит их в квадрат и суммирует. Часть кода я реализую через отдельную функцию (так надо). Сама проблема в том, что, доходя до функции, процесс обрывается, а идей, как исправить, нет, поэтому и обращаюсь к вам.

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<math.h>
    #include<windows.h>
    #include<string.h>
    float avarage = 0;
    int array_1[20] = { 0 };
    float V = 0;
    float final = 0;
    int N = 0;
    void main()
    {
        SetConsoleOutputCP(1251);
        SetConsoleCP(1251);
        int O, N, A, B;
        A = 1;
        B = 10;
        O = 0;
        float sum = 0;
        printf("Введіть кількість елементів масиву: ");
        scanf("%d", &N);
    
        srand(time(NULL));
        for (int i = 0 ; i < N; i++)
        {
         array_1[i] = rand() % (B - A + 1) + A;
         printf("%5d", array_1[i]);
         O = array_1[i];
         sum = sum + O;
        }
        avarage = sum / N; 
        printf("\nСереднє арифметичне масиву: %f", avarage);
        void output(float avarage);
        
    }
    
    void output(float avarage) 
    {
        printf("\nHello World");
        for (int i = 0; i < N; i++)
        {
            V = array_1[i] - avarage;
            printf("\n%f", V);
            final = V * V + final;
        }
        printf("\n%f", final);
    }

Ответы (2 шт):

Автор решения: Daniil Loban

Оставил в комментариях изменения в коде. (то чего нет в линуксе на работу не влияет, можно вернуть)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
//#include <windows.h> // нет в линуксе
#include <time.h>  // для time
#include <stdlib.h> // для rand
#include <string.h>
float avarage = 0;
int array_1[20] = { 0 };
float V = 0;
float final = 0;
int N = 0;
void output(float avarage); // так делается объявление функции

int main(void)
{
    //SetConsoleOutputCP(1251); // нет в линуксе 
    //SetConsoleCP(1251);       // нет в линуксе
    int O, A, B;                // N объявлено глобально
    A = 1;
    B = 10;
    O = 0;
    float sum = 0;
    printf("Введіть кількість елементів масиву: ");
    scanf("%d", &N);
    srand(time(NULL));
    for (int i = 0 ; i < N; i++)
    {
     array_1[i] = rand() % (B - A + 1) + A;
     printf("%5d", array_1[i]);
     O = array_1[i];
     sum = sum + O;
    }
    avarage = sum / N; 
    printf("\nСереднє арифметичне масиву: %f", avarage);
    output(avarage); // вызов делается так
    return 0;
}

void output(float avarage) 
{
    printf("\nHello World");
    for (int i = 0; i < N; i++)
    {
        V = array_1[i] - avarage;
        printf("\n%f", V);
        final = V * V + final;
    }
    printf("\n%f", final);
}
→ Ссылка
Автор решения: Harry

Немножко математики:

введите сюда описание изображения

А значит,

float sum = 0, sum2 = 0;
...
sum = sum + O;
sum2 += O*O;

и вместо вычисления отклонений -

printf("\n%f", sum2-sum*sum/N);

Вот примерный код:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<windows.h>

void main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int N;
    float sum = 0, sum2 = 0;
    printf("Введіть кількість елементів масиву: ");
    scanf("%d", &N);
    srand(time(NULL));
    int A = 1, B = 10;
    for (int i = 0, j ; i < N; i++)
    {
        j = rand() % (B - A + 1) + A;
        printf("%5d", j);
        sum += j;
        sum2 += j*j;
    }
    printf("\nСереднє арифметичне масиву: %f", sum/N);
    printf("\nКвадратичне вiдхилення: %f", sum2 - sum*sum/N);

}
→ Ссылка