Не работает сортировка массива: Ошибка сегментирования - C (СИ)
Формулировка задачи:
Всем доброго вечера.
Дали задание в университете:
Дана последовательность из n чисел элементов.Сформулировать новую последовательность,в которой сначала расположены в порядке возрастания все отрицательные элементы исходной последовательности,а затем в порядке убывания все положительные элементы.Исходную и полученную последовательности вывести на экран для сравнения.
Я столкнулся с ошибкой сегментирования!Не могу понять,в кокой строчке ошибка.
#include <stdio.h>
#include <conio.h>
int main()
{
int n,i,j,x;
int a[100],b[100];
for (;;)
{
printf("Введите количество элементов : \n");
scanf("%d",&n);
if (n==0) break;
printf("Введите элементы массива : \n");
for (i=0;i<n-1;i++)
{
scanf("%d",&a[i]);
}
for (i=1;i<n-1;i++)
{
if (a[j-1]<0 && a[j]<0 && a[j-1]<a[j]<0)
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
if ((a[j-1]>0) && (a[j]<=0) || (a[j-1]=0) && (a[j]<0))
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
if (a[j-1]>0 && a[j]>0 && a[j-1]>a[j]<0)
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
}
printf("результат : \n");
for (i=0;i<n-1;i++);
printf("%d",&a[i]);
for (i=j=0;i<n;i++)
{
b[j++]=a[i];
}
printf("Результат : %d \n",a[i],b[j]);
return 0;
}
}Решение задачи: «Не работает сортировка массива: Ошибка сегментирования»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int input(int a[],int n)
{
int i,m;
// do
// {
printf("введите количество элементов массива : \n");
scanf("%d",&m);
// }
// while (m<0||m>n);
printf("Введите элементы массива : \n");
for (i=0;i<m;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
return m;
}
//вывод//
void output(int a[],int n)
{
int i;
for (i=0;i<n;i++)
printf("%d ",a[i]);
}
//сортировка по неубыванию//
void sort_one(int a[],int n, int t)
{
int i,j,m;
for (i=t;i<n-1;i++)
for(j=t; j<n-1; j++)
if(a[j]<a[j+1])
{
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
//сортировка отрицательных чисел//
int sort_two(int a[],int n)
{
int i,j,t=0,m;
for (i=0;i<n;i++)
if(a[i]<0)
{
m=a[t];
a[t]=a[i];
a[i]=m;
j=t;
while(j>0 && a[j]<a[j-1])
{
m=a[j];
a[j]=a[j-1];
a[j-1]=m;
}
t++;
}
return t;
}
//новый массив//
//main//
int main()
{
int i,a[100],b[100],n,t;
for (;;)
{
n=input(a,n);
printf("Исходный массив : \n");
output(a,n);
t=sort_two(a,n);
sort_one(a,n,t);
printf("Новый массив : \n");
output(a,n);
}
return 0;
}