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

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

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

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

textual
#include <stdio.h>
#include <time.h>
 
#define SIZE_A 5
#define SIZE_B 8
 
#define MAX_NUMBER  100
#define MIN_NUMBER -100
 
void MakeArray(int *Array, int size);
 
int main() {
    
    srand(time(NULL));
 
    int *A = malloc(SIZE_A * sizeof(int));
    int *B = malloc(SIZE_B * sizeof(int));
    int *C = NULL;
    int *temp = NULL;
    int i, j = 0;
 
    void(*MakeArrayPtr)(int *Array, int size);
    MakeArrayPtr = MakeArray;
    
    printf("First array:\n");
    MakeArrayPtr(A, SIZE_A);
 
    printf("\nSecond array:\n");
    MakeArrayPtr(B, SIZE_B);
 
    for (i = 0; i < SIZE_A; i++) {
        if (A[i] > A[1]) {
            j++;
            temp = realloc(C, j * sizeof(int));
            if (temp != NULL) {
                C = temp;
                C[j - 1] = A[i];
            }
            else {
                free(temp);
                puts("Error (re)allocating memory");
                exit(1);
            }
        }
    }
 
    for (i = 0; i < SIZE_B; i++) {
        if (B[i] > 0) {
            j++;
            temp = realloc(C, j * sizeof(int));
            if (temp != NULL) {
                C = temp;
                C[j - 1] = B[i];
            }
            else {
                free(temp);
                puts("Error (re)allocating memory");
                exit(1);
            }
        }
    }
 
    printf("\nResult array: \n");
    for (i = 0; i < j; i++) {
        printf("[%d]:%d ", i, C[i]);
    }
    
    free(A);
    free(B);
    free(C);
    return 0;
}
 
void MakeArray(int *Array, int size) {
    for (int i = 0; i < size; i++) {
        Array[i] = rand() % (MAX_NUMBER + 1 - MIN_NUMBER) + MIN_NUMBER;
        printf("[%d]:%d ", i, Array[i]);
    }
}

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


СОХРАНИТЬ ССЫЛКУ