Не работает сортировка массива: Ошибка сегментирования - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброго вечера. Дали задание в университете: Дана последовательность из n чисел элементов.Сформулировать новую последовательность,в которой сначала расположены в порядке возрастания все отрицательные элементы исходной последовательности,а затем в порядке убывания все положительные элементы.Исходную и полученную последовательности вывести на экран для сравнения. Я столкнулся с ошибкой сегментирования!Не могу понять,в кокой строчке ошибка.
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int main()
  4. {
  5. int n,i,j,x;
  6. int a[100],b[100];
  7. for (;;)
  8. {
  9. printf("Введите количество элементов : \n");
  10. scanf("%d",&n);
  11. if (n==0) break;
  12. printf("Введите элементы массива : \n");
  13. for (i=0;i<n-1;i++)
  14. {
  15. scanf("%d",&a[i]);
  16. }
  17. for (i=1;i<n-1;i++)
  18. {
  19. if (a[j-1]<0 && a[j]<0 && a[j-1]<a[j]<0)
  20. x=a[j-1];
  21. a[j-1]=a[j];
  22. a[j]=x;
  23. if ((a[j-1]>0) && (a[j]<=0) || (a[j-1]=0) && (a[j]<0))
  24. x=a[j-1];
  25. a[j-1]=a[j];
  26. a[j]=x;
  27. if (a[j-1]>0 && a[j]>0 && a[j-1]>a[j]<0)
  28. x=a[j-1];
  29. a[j-1]=a[j];
  30. a[j]=x;
  31. }
  32. printf("результат : \n");
  33. for (i=0;i<n-1;i++);
  34. printf("%d",&a[i]);
  35. for (i=j=0;i<n;i++)
  36. {
  37. b[j++]=a[i];
  38. }
  39. printf("Результат : %d \n",a[i],b[j]);
  40. return 0;
  41. }
  42. }

Решение задачи: «Не работает сортировка массива: Ошибка сегментирования»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int input(int a[],int n)
  4. {
  5.     int i,m;
  6.    // do
  7.    // {
  8.         printf("введите количество элементов массива : \n");
  9.         scanf("%d",&m);
  10.        // }
  11.          //  while (m<0||m>n);
  12.         printf("Введите элементы массива : \n");
  13.         for (i=0;i<m;i++)
  14.         {
  15.             printf("a[%d]=",i);
  16.             scanf("%d",&a[i]);
  17.             }
  18.             return m;
  19. }
  20. //вывод//
  21. void output(int a[],int n)
  22. {
  23.      int i;
  24.      for (i=0;i<n;i++)
  25.      printf("%d ",a[i]);
  26. }
  27. //сортировка по неубыванию//
  28. void sort_one(int a[],int n, int t)
  29. {
  30.      int i,j,m;
  31.      for (i=t;i<n-1;i++)
  32.          for(j=t; j<n-1; j++)
  33.              if(a[j]<a[j+1])
  34.              {
  35.                  m=a[j];
  36.                  a[j]=a[j+1];
  37.                  a[j+1]=m;
  38.              }
  39. }
  40. //сортировка отрицательных чисел//
  41. int sort_two(int a[],int n)
  42. {
  43.      int i,j,t=0,m;
  44.      for (i=0;i<n;i++)
  45.          if(a[i]<0)
  46.          {
  47.              m=a[t];
  48.              a[t]=a[i];
  49.              a[i]=m;
  50.              j=t;
  51.              while(j>0 && a[j]<a[j-1])
  52.              {
  53.                  m=a[j];
  54.                  a[j]=a[j-1];
  55.                  a[j-1]=m;
  56.              }
  57.              t++;
  58.          }
  59.          return t;
  60. }
  61. //новый массив//
  62.  
  63. //main//
  64. int main()
  65. {
  66.      int i,a[100],b[100],n,t;
  67.      for (;;)
  68.      {
  69.      n=input(a,n);
  70.      printf("Исходный массив : \n");
  71.      output(a,n);
  72.      t=sort_two(a,n);
  73.      sort_one(a,n,t);
  74.      printf("Новый массив : \n");
  75.      output(a,n);
  76.      }
  77.      return 0;
  78. }

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


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

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы