Два года в /fg/. Войти !bnw Сегодня Клубы
c
при динамическом выделении памяти размер массива как определить?
#9A7Y7H / @anonymous / 1411 дней назад

Никак, как выделишь таскай с собой
#9A7Y7H/ATM / @mugiseyebrows / 1411 дней назад
Примерно так, но нужно поправить - мозг. ``` #include <stdio.h> #include <stdlib.h> // gcc lr1.19.c -o lr1.19 -std=c99 int cmp(const void *a, const void *b) { // Четвёртый аргумент функции qsort — это имя функции, return *(int *)a - *(int *)b; // которая умеет сравнивать два элемента массива. } void printArray(int arr[], int n) // функция вывода массива { int i; for (i = 0; i < n; i++) printf("[ %d ]", arr[i]); } int main() { int Enter, sum = 0; int *Arr_max_min = malloc(sizeof(int)); // динамический массив для отрицательных чисел int max_min = 0; // Максимальное из отрицательных int *Arr_min_max = malloc(sizeof(int)); // динамический массив для положительных чисел int min_max = 0; // Минимальное из положительных int cell_all = 0; // суммарное количество цифр int cell_max_min = 0; // суммарное количество отрицательных цифр int cell_min_max = 0; // суммарное количество положительных цифр do { printf("[%d] -> ", cell_all); // выводим номер ячейки scanf("%d", &Enter); sum += Enter; // Складываем числа. cell_all++; // if (Enter < max_min) // если введенное меньше 0 { // Максимальное из отрицательных cell_max_min++; // + ячейка Arr_max_min[cell_max_min - 1] = Enter; // запись в ячейку введенного значения Arr_max_min = realloc(Arr_max_min, sizeof(int) * (cell_max_min + 1)); } if (Enter > min_max) { // Минимальное из положительных cell_min_max++; // + ячейка Arr_min_max[cell_min_max - 1] = Enter; // запись в ячейку введенного значения Arr_min_max = realloc(Arr_min_max, sizeof(int) * (cell_min_max + 1)); } } while (Enter != 0); // пока Enter не 0 // массив число ячеек ук.размера функция сравнения двух элементов qsort(Arr_max_min, cell_max_min, sizeof(int), cmp); qsort(Arr_min_max, cell_min_max, sizeof(int), cmp); printf("\n"); printArray(Arr_max_min, cell_max_min); printf(" "); printArray(Arr_min_max, cell_min_max); printf("\n"); printf("\n"); printf("Всего введено чисел включая завершающий [0]: %i\n", cell_all); printf("Всего введено отрицательных чисел: %i\n", cell_max_min); printf("Всего введено отрицательных чисел: %i\n", cell_min_max); printf("Максимальное число из отрицательных: %d\n", Arr_max_min[0]); printf("Минимальное число из положительных: %d\n", Arr_min_max[0]); printf("Сумма всех чисел: %i\n", sum); free(Arr_max_min); // очистим занимаемую память free(Arr_min_max); return 0; // отправим основной функции 0 - нет ошибки } /* Минимальное из положительных Максимальное из отрицательных */ ```
#9A7Y7H/62L / @sin-ok / 1410 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.