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

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

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

Добрый день, подскажите, почему в этой программе никогда не срабатывает цикл, мы никогда не входим в него? Заранее спасибо.
#include <stdio.h>
 
void main(void)
{
    int a = 0;
    int array[10];
    int tmp = 0;
    for (int i = 0; i < 10; i++)
    {
        scanf_s("%d", &a);
        array[i] = a;
    }
    for (int i = 0; i < 10; i++)
    {
        for (int i = 0; i < 10; i++){
            if (array[i] > array[i++]) //эта проверка не срабатывает
            {
                tmp = array[i];
                array[i] = array[i++];
                array[i + 1] = tmp;
            }
        }
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", array[i]);
    }
    scanf_s("%d,", &a);
}

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

textual
Листинг программы
void main(void)
{
    int a = 0;
    int array[10];
    int tmp = 0;
    for (int i = 0; i < 10; i++)
    {
        scanf_s("%d", &a);
        array[i] = a;
    }
    
    while (1)
    {
        a=0;
        for (int i = 0; i < 9; i++)
        {
            if (array[i] > array[i+1]) 
            {
                tmp = array[i];
                array[i] = array[i+1];
                array[i + 1] = tmp;
                a=1;
            }
        }
        if (a==0) break;
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", array[i]);
    }
    scanf_s("%d,", &a);
}

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

  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
Похожие ответы