Предмет: Информатика, автор: maks37911

Составьте программу формирования из массива А (N) двух массивов, в которых первый массив заполнен отрицательными, а второй положительными элементами. и отсортировать первый по убыванию, второй по возрастанию. на языке С

Ответы

Автор ответа: tskmasterpvl
0

Ответ:

#include <stdio.h>

#include <stdlib.h>

void separateAndSort(int* A, int N, int** negative, int** positive) {

   // Allocate memory for the two arrays

   *negative = (int*)malloc(N * sizeof(int));

   *positive = (int*)malloc(N * sizeof(int));

   int negativeCount = 0;

   int positiveCount = 0;

   for (int i = 0; i < N; i++) {

       if (A[i] < 0) {

           (*negative)[negativeCount++] = A[i];

       } else {

           (*positive)[positiveCount++] = A[i];

       }

   }

   // Reallocate memory to free unused space

   *negative = (int*)realloc(*negative, negativeCount * sizeof(int));

   *positive = (int*)realloc(*positive, positiveCount * sizeof(int));

   // Sort the negative array in descending order

   for (int i = 0; i < negativeCount - 1; i++) {

       for (int j = i + 1; j < negativeCount; j++) {

           if ((*negative)[i] < (*negative)[j]) {

               int temp = (*negative)[i];

               (*negative)[i] = (*negative)[j];

               (*negative)[j] = temp;

           }

       }

   }

   // Sort the positive array in ascending order

   for (int i = 0; i < positiveCount - 1; i++) {

       for (int j = i + 1; j < positiveCount; j++) {

           if ((*positive)[i] > (*positive)[j]) {

               int temp = (*positive)[i];

               (*positive)[i] = (*positive)[j];

               (*positive)[j] = temp;

           }

       }

   }

}

int main() {

   int A[] = {-3, 4, -1, 2, -2, 8, -5};

   int N = sizeof(A) / sizeof(A[0]);

   int* negative;

   int* positive;

   separateAndSort(A, N, &negative, &positive);

   printf("Negative array: ");

   for (int i = 0; i < sizeof(negative) / sizeof(negative[0]); i++) {

       printf("%d ", negative[i]);

   }

   printf("\nPositive array: ");

   for (int i = 0; i < sizeof(positive) / sizeof(positive[0]); i++) {

       printf("%d ", positive[i]);

   }

   free(negative);

   free(positive);

   return 0;

}

Объяснение:

Похожие вопросы
Предмет: Математика, автор: liza3042
Предмет: Українська мова, автор: maktru256