Другие языки программирования и технологии

Помогите откомпилировать программу(язык Си)

Массив: 130 случайных чисел из диапазона [-1000, 1000]. Найти номера двух ближайших по значению чисел из этого массива. Отсортируйте по убыванию все числа, расположенные между этой парой.

#include<stdio.h>
#include<time.h>
#include <stdlib.h>
void main()
{
int j,k,x,y,min=4000000;
int a[130];
srand((unsigned)time(NULL));
for(j=0;j<=130;j--)
a[j]=1000-srand() 01);
printf("a[%d]=%d\t",j,a[j++]);
printf("\n");
for(j=0;j<=130;j++)
{
for(k=j+1;k<=130;k++){
if(min>(a[j]-a[k]))
min=(a[j]-a[k])*(a[j]-a[k]),x=j,y=k;
}
printf("номера ближайших по значению элементов: %d и %d\n",x,y);
for(j=x+1;j-y;j++)
for(k=x+2;k-y;k++)
if(a[k]>a[k-1]){
min=a[k],a[k]=a[k-1]=min;
}
for(j=0;j<=130;j++)
printf("a[%d]=%d\t",j,a[j++]);
printf("\n");
free(a);
return;
}
// Алексей_Манюк_2012-01-13
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
#define N 130
#define LIM 2001
#define NEG (LIM - 1) / 2

int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int indexX, indexY, min, temp;
int a[N];
srand((unsigned) time(NULL));

do
{
indexX = indexY = 0;
min = LIM;

for (int j = 0; j < N; j++)
{
a[j] = NEG - rand() % LIM;
printf("a[%d] = %d\t", j, a[j]);
}

printf("\n");

for (int j = 0; j < N; j++)
{
for (int k = 0; k < N; k++)
{
if (j == k) continue;
if (a[j] < 0 && a[k] < 0 || a[j] >= 0 && a[k] >= 0)
{
if(min > abs((abs(a[j]) - abs(a[k]))))
{
min = abs(abs(a[j]) - abs(a[k]));
indexX = j;
indexY = k;
}
}
else if (a[j] >= 0 && a[k] < 0)
{
if (min > a[j] + abs(a[k]))
{
min = a[j] + abs(a[k]);
indexX = j;
indexY = k;
}
}
else if (a[j] < 0 && a[k] >= 0)
{
if (min > a[k] + abs(a[j]))
{
min = a[k] + abs(a[j]);
indexX = j;
indexY = k;
}
}
}
}

printf(" Индексы ближайших по значению элементов: %d и %d\n\n", indexX, indexY);

if (abs(indexX - indexY) < 3)
printf("\n Перестановка не требуется! \a");
else
{
if (indexX > indexY)
{
temp = indexX;
indexX = indexY;
indexY = temp;
}

indexX++;
int m, k = indexX + 1;

for (k; k < indexY; k++)
{
m = k;

while (m > indexX && a[m - 1] < a[m])
{
temp = a[m];
a[m] = a[m - 1];
a[m - 1] = temp;
m--;
}
}
}

for (int j = 0; j < N; j++)
printf("a[%d] = %d\t", j, a[j]);

getch();
system("cls");
}
while (1);
return 0;
}

Я, тут кое что исправил :)
Giorgi Iakobashvili
Giorgi Iakobashvili
78 831
Лучший ответ
for(j=0;j<=130;j--)
от нуля до 130 =131 элемент. вылет за пределы массива
Нафига там минусы непонятно
И скобки упущены

(может ещё что - -дальше не копал)