Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Сортировка подсчётом
- Автор: Антон Кобзев
- */
- #include <stdlib.h>
- #include <stdio.h>
- #define MAX_ELEMENT_VALUE 3000 // Данная сортировка накладывает ограничение на максимально значение сортируемых чисел
- int main() {
- int n, count[MAX_ELEMENT_VALUE * 2 + 1] = {0}, // count[i] - сколько встретилось число i во входном потоке
- i, value, inputRes = 0;
- printf("Enter elements count: ");
- if (scanf("%d", &n) != 1 || n <= 0) {
- printf("Error, incorrect input\n"); // Ошибка, если ввели не число, а что-то ещё
- return 1;
- }
- printf("Enter elements: ");
- for (i = 0; i < n; i++) {
- inputRes = scanf("%d", &value);
- if (value > MAX_ELEMENT_VALUE) {
- printf("Error, too large number: %d, max allowed: %d\n", value, MAX_ELEMENT_VALUE);
- return 1;
- } else if (value < -MAX_ELEMENT_VALUE) {
- printf("Error, too small number: %d, min allowed: %d\n", value, -MAX_ELEMENT_VALUE);
- return 1;
- } else if (inputRes == 1) {
- count[value + MAX_ELEMENT_VALUE]++; // Считаем, сколько раз ввели данное число
- } else {
- printf("Error, incorrect input\n"); // Ошибка, если ввели не число, а что-то ещё
- return 1;
- }
- }
- for (i = 0; i < MAX_ELEMENT_VALUE * 2 + 1; i++)
- while (count[i]--) // Сколько раз число ввели, столько раз его и выводим
- printf("%d ", i - MAX_ELEMENT_VALUE);
- printf("\n");
- return 0;
- }
- // SESH
Advertisement
Add Comment
Please, Sign In to add comment