69 lines
1.7 KiB
C
69 lines
1.7 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
|
|
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;
|
|
}
|