Сформировать массив из элементов, больших второго элемента первого массива и положительных элементов второго - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сформировать массив из элементов исходных массивов, больших второго элемента первого массива и положительных элементов второго массива. Требуется сформировать новый массив по заданию. В программе реализовать: 1) генерацию случайным образом элементов исходных массивов; 2) выполнение действия в соответствии с условием задачи; 3) порядок вывода: • исходные массивы, • сформированный массив, если он был сформирован. В противном случае – соответствующее сообщение. Помогите, а то не могу сделать

Решение задачи: «Сформировать массив из элементов, больших второго элемента первого массива и положительных элементов второго»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. #define SIZE_A 5
  5. #define SIZE_B 8
  6.  
  7. #define MAX_NUMBER  100
  8. #define MIN_NUMBER -100
  9.  
  10. void MakeArray(int *Array, int size);
  11.  
  12. int main() {
  13.    
  14.     srand(time(NULL));
  15.  
  16.     int *A = malloc(SIZE_A * sizeof(int));
  17.     int *B = malloc(SIZE_B * sizeof(int));
  18.     int *C = NULL;
  19.     int *temp = NULL;
  20.     int i, j = 0;
  21.  
  22.     void(*MakeArrayPtr)(int *Array, int size);
  23.     MakeArrayPtr = MakeArray;
  24.    
  25.     printf("First array:\n");
  26.     MakeArrayPtr(A, SIZE_A);
  27.  
  28.     printf("\nSecond array:\n");
  29.     MakeArrayPtr(B, SIZE_B);
  30.  
  31.     for (i = 0; i < SIZE_A; i++) {
  32.         if (A[i] > A[1]) {
  33.             j++;
  34.             temp = realloc(C, j * sizeof(int));
  35.             if (temp != NULL) {
  36.                 C = temp;
  37.                 C[j - 1] = A[i];
  38.             }
  39.             else {
  40.                 free(temp);
  41.                 puts("Error (re)allocating memory");
  42.                 exit(1);
  43.             }
  44.         }
  45.     }
  46.  
  47.     for (i = 0; i < SIZE_B; i++) {
  48.         if (B[i] > 0) {
  49.             j++;
  50.             temp = realloc(C, j * sizeof(int));
  51.             if (temp != NULL) {
  52.                 C = temp;
  53.                 C[j - 1] = B[i];
  54.             }
  55.             else {
  56.                 free(temp);
  57.                 puts("Error (re)allocating memory");
  58.                 exit(1);
  59.             }
  60.         }
  61.     }
  62.  
  63.     printf("\nResult array: \n");
  64.     for (i = 0; i < j; i++) {
  65.         printf("[%d]:%d ", i, C[i]);
  66.     }
  67.    
  68.     free(A);
  69.     free(B);
  70.     free(C);
  71.     return 0;
  72. }
  73.  
  74. void MakeArray(int *Array, int size) {
  75.     for (int i = 0; i < size; i++) {
  76.         Array[i] = rand() % (MAX_NUMBER + 1 - MIN_NUMBER) + MIN_NUMBER;
  77.         printf("[%d]:%d ", i, Array[i]);
  78.     }
  79. }

Объяснение кода листинга программы

  1. Создаются две массивы, A и B, с помощью функции malloc().
  2. В функции main() инициализируется генератор случайных чисел с помощью srand(time(NULL)).
  3. В цикле заполняются массивы A и B с помощью функции MakeArray().
  4. Создается пустой массив C для хранения результата.
  5. В функции MakeArray() генерируются случайные числа в заданном диапазоне и записываются в массив Array.
  6. Если элемент массива A больше второго элемента массива A, то он копируется в массив C.
  7. Если элемент массива B больше нуля, то он копируется в массив C.
  8. Выводится массив C с помощью цикла for и функции printf().
  9. Все выделенные массивы освобождаются с помощью функции free().
  10. Возвращается значение 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы