From e40ce553c7b974e6f57cfc1f49364cfdf8d7a4c3 Mon Sep 17 00:00:00 2001 From: gandc Date: Thu, 13 Mar 2025 15:58:46 +0300 Subject: [PATCH] first version of t4 --- task4/main.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/task4/main.c b/task4/main.c index e69de29..718e1ea 100644 --- a/task4/main.c +++ b/task4/main.c @@ -0,0 +1,68 @@ +#include +#include +#include + +int main(void) { + int n; + printf("Введите размер массива b: "); + scanf("%d", &n); + + int *b = (int*) malloc(n * sizeof(int)); + if (!b) { + printf("Ошибка выделения памяти.\n"); + return 1; + } + + printf("Введите %d элементов массива b:\n", n); + for (int i = 0; i < n; i++) { + scanf("%d", &b[i]); + } + + // Определяем количество положительных элементов + int count = 0; + for (int i = 0; i < n; i++) { + if (b[i] > 0) { + count++; + } + } + + // Выделяем память для массива C + double *C = (double*) malloc(count * sizeof(double)); + if (!C) { + printf("Ошибка выделения памяти для массива C.\n"); + free(b); + return 1; + } + + // Заполняем массив C + int j = 0; + for (int i = 0; i < n; i++) { + if (b[i] > 0) { + C[j] = sqrt(b[i]) / 5.0; + j++; + } + } + + // Сортировка массива C методом выбора + for (int i = 0; i < count - 1; i++) { + int minIndex = i; + for (int k = i + 1; k < count; k++) { + if (C[k] < C[minIndex]) + minIndex = k; + } + // Обмен значениями + double temp = C[i]; + C[i] = C[minIndex]; + C[minIndex] = temp; + } + + printf("Отсортированный массив C:\n"); + for (int i = 0; i < count; i++) { + printf("%f ", C[i]); + } + printf("\n"); + + free(b); + free(C); + return 0; +}