Не работает сортировка массива: Ошибка сегментирования - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д