Не работает сортировка массива: Ошибка сегментирования - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы