Массив. Вывести на экран 2 столбика: отрицательные и положительные числа,отсортированных по возрастанию - C (СИ)

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

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

Помогите пожалуйста с заданием,не получается сделать его. После введения из клавиатуры любого массива целых чисел вывести на экран 2 столбика : отрицательные и положительные числа,отсортированных по возрастанию.

Решение задачи: «Массив. Вывести на экран 2 столбика: отрицательные и положительные числа,отсортированных по возрастанию»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
#define N 100
 
int IntCmp(const void* a, const void* b) {
    return *((const int*) a) - *((const int*)b);
}
 
int main() {
    int array[N];
    size_t len = 0;
    size_t i, a, b;
 
    while ((len < N) && (scanf("%d", &array[len]) == 1) && array[len]) {
        len++;
    }
 
    qsort(array, len, sizeof(*array), IntCmp);
 
    for (b = 0; (b < len) && (array[b] < 0); ++b) { ; }
 
    i = b;
    a = 0;
 
    while ((a < i) || (b < len)) {
        if (a < i) {
            printf("%d", array[a++]);
        }
        if (b < len) {
            printf("\t%d", array[b++]);
        }
        printf("\n");
    }
 
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с массивами и сортировкой

    include

    include

  2. Определяем константу N, которая задает размер массива

    define N 100

  3. Создаем функцию сравнения для работы с qsort int IntCmp(const void a, const void b) { return ((const int) a) - ((const int)b); }
  4. В функции main() создаем массив типа int и инициализируем его нулями int main() { int array[N] = {0}; size_t len = 0; size_t i, a, b;
  5. Считываем числа с помощью scanf и сохраняем их в массиве до тех пор, пока не будет введен ноль или не заполнится массив while ((len < N) && (scanf(%d, &array[len]) == 1) && array[len]) { len++; }
  6. Сортируем массив по возрастанию с помощью функции qsort и передаем ей функцию сравнения qsort(array, len, sizeof(*array), IntCmp);
  7. Находим индекс первого отрицательного числа в отсортированном массиве for (b = 0; (b < len) && (array[b] < 0); ++b) { ; }
  8. Инициализируем переменные i и a, которые будут использоваться в цикле вывода i = b; a = 0;
  9. В цикле выводим на экран числа из массива, разделенные табуляцией, до тех пор, пока не будут выведены все отрицательные числа или не будут выведены все положительные числа while ((a < i) || (b < len)) { if (a < i) { printf(%d, array[a++]); } if (b < len) { printf(\t%d, array[b++]); } printf(\n); }
  10. Завершаем программу и возвращаем 0 return 0; }

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


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

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

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