Массив. Вывести на экран 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с массивами и сортировкой
include
include
- Определяем константу N, которая задает размер массива
define N 100
- Создаем функцию сравнения для работы с qsort int IntCmp(const void a, const void b) { return ((const int) a) - ((const int)b); }
- В функции main() создаем массив типа int и инициализируем его нулями int main() { int array[N] = {0}; size_t len = 0; size_t i, a, b;
- Считываем числа с помощью scanf и сохраняем их в массиве до тех пор, пока не будет введен ноль или не заполнится массив
while ((len < N) && (scanf(
%d
, &array[len]) == 1) && array[len]) { len++; } - Сортируем массив по возрастанию с помощью функции qsort и передаем ей функцию сравнения qsort(array, len, sizeof(*array), IntCmp);
- Находим индекс первого отрицательного числа в отсортированном массиве for (b = 0; (b < len) && (array[b] < 0); ++b) { ; }
- Инициализируем переменные i и a, которые будут использоваться в цикле вывода 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
); } - Завершаем программу и возвращаем 0 return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д