Выполнить сортировку элементов последовательности по возрастанию - C (СИ)
Формулировка задачи:
Дано натуральное число N и одномерный массив A1, A2, ..., AN символьных элементов. Выполнить сортировку элементов последовательности по возрастанию.
Если нужно выполнить сортировку, то символы массива - числа, я правильно понимаю?
Решение задачи: «Выполнить сортировку элементов последовательности по возрастанию»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <windows.h> int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); unsigned char *ptr = NULL; unsigned char *t; unsigned char *ptr_end; int n; printf("Введите количество элементов: "); scanf("%d", &n); unsigned char c = n + '0';//преобразовую инт в чар ptr = (unsigned char *) malloc(n*sizeof(unsigned char)); if(!ptr){ printf("Память не выделена!"); exit(1); } ptr_end = ptr + с; printf("Введите элементы массива: "); for(t = ptr; t<ptr_end; t++){ scanf("%s", t); } for(t = ptr; t<ptr_end; t++){ printf("%s", t); }
Объяснение кода листинга программы
Код, представленный в вопросе, выполняет следующие действия:
- Устанавливает кодировку консоли в Windows на кодировку OEM (1251).
- Инициализирует переменные:
ptr
указывает на начало выделенной памяти, равнойn
символам.t
является временной переменной, используемой в цикле.ptr_end
указывает на конец выделенной памяти, т.е.n + 1
символов.
- Запрашивает у пользователя ввод количества элементов, которые будут добавлены в массив.
- Преобразует введенное количество элементов в ASCII-символ, чтобы оно могло быть использовано в качестве индекса для массива.
- Выделяет память для массива
n
символов. - Если память не может быть выделена, выводит сообщение об ошибке и завершает программу.
- Запрашивает у пользователя ввод элементов массива.
- Выводит элементы массива. Стоит отметить, что данный код не выполняет сортировку элементов по возрастанию. Возможно, для решения этой задачи потребуется дополнительный код, который будет сортировать элементы массива.