Так что я работаю над этой программой, которая должна принимать указатель на массив и размер массива (количество элементов в массиве) в качестве аргументов, находит место индекса выброса, фиксирует массив на месте (что is помещает выброс в место, где он должен быть), и возвращает старый индекс, в котором был найден выброс. я закончил свой код, но по какой-то причине где-то в моей основной функции он говорит мне, что есть ошибка сегментации, я знаю, что это в моей основной функции, потому что она компилировалась и работала нормально, когда это был просто исходный код. вот код;
#include <stdio.h>
long long int fix_sorted_array(double* arr, unsigned long n)
{
double temp;
int i, j;
for ( i = 0; i < n - 1; i ++)
{
if (arr[i] > arr[i + 1])
{
for ( j = i + 1; j > 0; j --)
{
if (arr[j] < arr[j-1])
{
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
return i + 1;
}
}
return -1;
}
int main()
{
int n;
int j;//declared variables
double arr[n];
printf("Enter elements of array : \n");
for ( int i = 0; i < n; i ++)
{
scanf("%lf", &arr[i]);
}
printf("Return index : %lld\n",fix_sorted_array (&arr[n], n));
printf("Array after : \n");
for ( j = 0; j < n; j ++)
{
printf("%.2lf", arr[j]);
}
}