Поиск ошибки в программе - 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будет отсортирован по возрастанию.