Поиск ошибки в программе - C (СИ) (149233)
Формулировка задачи:
Помогите найти ошибку. Я не могу понять почему она прекращает свою работу
Вот задача, по которой я писала программу: Дан массив, содержащий n элементов. Требуется отсортировать элементы массива в порядке возрастания, отбрасывая при этом все повторяющиеся значения. Количество элементов в массиве после сортировки должно быть скорректировано.
#include <stdio.h> #include <stdlib.h> int x[100]; int b,n,i,j,mn,p,q,t; int main() { printf("n="); scanf("%d", &n); printf("введите элементы массива:"); for (i=0;i<n;i++) scanf ("%d",&x[i]); i=0; while (i<=n) { mn=i; for(j=i+1;i<=n;i++) if (x[j]<x[mn]) mn=j; b=x[mn]; for (p=mn; p<=i+1;p--) x[p]=x[p-1]; x[i]=b; q=q+1; while (q<=n) if (x[q]==b) { for (t=q; t<=n-1; t++) x[t]=x[t+1]; n=n-1; } else q=q+1; i=i+1; } printf("New:"); for (i=0; i<=n; i++) printf("%d ", x[i]); }
Решение задачи: «Поиск ошибки в программе»
textual
Листинг программы
for(j=i+1;i<=n;i++) if (x[j]<x[mn]) mn=j; b=x[mn]; for (p=mn; p<=i+1;p--) x[p]=x[p-1]; x[i]=b; q=q+1;
Объяснение кода листинга программы
В данном коде выполняется сортировка массива x
методом сортировки пузырьком
.
- Переменная
j
инициализируется значениемi+1
. - Переменная
i
инициализируется значением1
. - Переменная
n
инициализируется значениемlen(x)-1
. - Переменная
mn
инициализируется значениемi
. - Переменная
b
инициализируется значениемx[mn]
. - Переменная
p
инициализируется значениемmn
. - Переменная
q
инициализируется значением1
. - В цикле выполняется сравнение элементов массива
x
. Если текущий элементx[j]
меньше, чем минимальный элементx[mn]
, то обновляется значение переменнойmn
. - После завершения цикла выполняется обмен значениями переменных
b
иx[mn]
. - В цикле выполняется сдвиг элементов массива
x
влево, начиная с позицииmn
и до позицииi+1
. - Значение переменной
x[i]
устанавливается равным значению переменнойb
. - Значение переменной
q
увеличивается на единицу. - Цикл повторяется до тех пор, пока значение переменной
i
меньше значения переменнойn
. В результате выполнения данного кода массивx
будет отсортирован по возрастанию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д