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

  1. Переменная j инициализируется значением i+1.
  2. Переменная i инициализируется значением 1.
  3. Переменная n инициализируется значением len(x)-1.
  4. Переменная mn инициализируется значением i.
  5. Переменная b инициализируется значением x[mn].
  6. Переменная p инициализируется значением mn.
  7. Переменная q инициализируется значением 1.
  8. В цикле выполняется сравнение элементов массива x. Если текущий элемент x[j] меньше, чем минимальный элемент x[mn], то обновляется значение переменной mn.
  9. После завершения цикла выполняется обмен значениями переменных b и x[mn].
  10. В цикле выполняется сдвиг элементов массива x влево, начиная с позиции mn и до позиции i+1.
  11. Значение переменной x[i] устанавливается равным значению переменной b.
  12. Значение переменной q увеличивается на единицу.
  13. Цикл повторяется до тех пор, пока значение переменной i меньше значения переменной n. В результате выполнения данного кода массив x будет отсортирован по возрастанию.

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


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

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

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