Пузырьковая сортировка - C (СИ) (70707)

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

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

Добрый день, подскажите, почему в этой программе никогда не срабатывает цикл, мы никогда не входим в него? Заранее спасибо.
Листинг программы
  1. #include <stdio.h>
  2. void main(void)
  3. {
  4. int a = 0;
  5. int array[10];
  6. int tmp = 0;
  7. for (int i = 0; i < 10; i++)
  8. {
  9. scanf_s("%d", &a);
  10. array[i] = a;
  11. }
  12. for (int i = 0; i < 10; i++)
  13. {
  14. for (int i = 0; i < 10; i++){
  15. if (array[i] > array[i++]) //эта проверка не срабатывает
  16. {
  17. tmp = array[i];
  18. array[i] = array[i++];
  19. array[i + 1] = tmp;
  20. }
  21. }
  22. }
  23. for (int i = 0; i < 10; i++)
  24. {
  25. printf("%d ", array[i]);
  26. }
  27. scanf_s("%d,", &a);
  28. }

Решение задачи: «Пузырьковая сортировка»

textual
Листинг программы
  1. void main(void)
  2. {
  3.     int a = 0;
  4.     int array[10];
  5.     int tmp = 0;
  6.     for (int i = 0; i < 10; i++)
  7.     {
  8.         scanf_s("%d", &a);
  9.         array[i] = a;
  10.     }
  11.    
  12.     while (1)
  13.     {
  14.         a=0;
  15.         for (int i = 0; i < 9; i++)
  16.         {
  17.             if (array[i] > array[i+1])
  18.             {
  19.                 tmp = array[i];
  20.                 array[i] = array[i+1];
  21.                 array[i + 1] = tmp;
  22.                 a=1;
  23.             }
  24.         }
  25.         if (a==0) break;
  26.     }
  27.     for (int i = 0; i < 10; i++)
  28.     {
  29.         printf("%d ", array[i]);
  30.     }
  31.     scanf_s("%d,", &a);
  32. }

Объяснение кода листинга программы

  1. В начале кода объявлены три переменные: a, array и tmp. Значение переменной a равно 0, а массив array содержит 10 элементов. Значение переменной tmp также равно 0.
  2. Далее, с помощью цикла for происходит заполнение массива array значениями, которые вводятся пользователем. Для этого используется функция scanf_s, которая принимает в качестве аргумента адрес переменной a и считывает в неё значение, введенное пользователем.
  3. После заполнения массива array значениями, происходит сортировка массива с помощью цикла while. В начале каждого прохода в цикле, переменной a присваивается значение 0.
  4. Затем, с помощью цикла for происходит сравнение элементов массива array. Если текущий элемент больше следующего, то они меняются местами, а переменной a присваивается значение 1.
  5. Если после прохода по всем элементам массива значение переменной a осталось равным 0, значит массив уже отсортирован, и выполнение программы завершается.
  6. В конце программы выводится отсортированный массив с помощью цикла for и функции printf. Значение переменной a, которое было последним введенным пользователем, считывается с помощью функции scanf_s.

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


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

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

12   голосов , оценка 3.917 из 5

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

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

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