Загрузка данных


#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int *data;
    size_t size;
    size_t capacity;
} Array;

Array ArrayInit() {
    Array array;
    array.size = 0;
    array.capacity = 10;

    array.data = (int *)malloc(sizeof(int) * array.capacity);
    if (array.data == NULL) {
        perror("init fail: ");
        free(array.data);
        array.data = NULL;
    }

    return array;
}

int ArrayAppend(Array *array, int value) {
    if (array->capacity >= array->size) {
        array->capacity *= 2;
    }

    array->data = (int *)realloc(array->data, array->capacity);
    if (array->data == NULL) {
        perror("append fail: ");
        free(array->data);
        array->data = NULL;
        return 1;
    }

    array->data[array->size] = value;
    array->size++;
    return 0;
}

int ArraySort(Array *array) {
    for (size_t i = 0; i < array->size - 1; i++) {
        for (size_t j = 0; j < array->size - i - 1; j++) {
            if (array->data[j] < array->data[j + 1]) {
                int tmp = array->data[j];
                array->data[j] = array->data[j + 1];
                array->data[j + 1] = tmp;
            }
        }
    }

    return 0;
}

void ArrayPrint(Array *array) {
    for (size_t i = 0; i < array->size; i++) {
        printf("%c", array->data[i]);
    }
    printf("\n");
}

int main() {
    Array arr = ArrayInit();
    // ArrayAppend(&arr, 12);
    // ArrayAppend(&arr, 13);
    // ArrayAppend(&arr, 3);

    ArrayAppend(&arr, 'H');
    ArrayAppend(&arr, 'e');
    ArrayAppend(&arr, 'l');
    ArrayAppend(&arr, 'l');
    ArrayAppend(&arr, 'o');
    
    ArrayPrint(&arr);

    ArraySort(&arr);
    ArrayPrint(&arr);
    
    return 0;
}