Сформировать массив из элементов, больших второго элемента первого массива и положительных элементов второго - C (СИ)
Формулировка задачи:
Сформировать массив из элементов исходных массивов, больших второго элемента первого массива и положительных элементов второго массива.
Требуется сформировать новый массив по заданию.
В программе реализовать:
1) генерацию случайным образом элементов исходных массивов;
2) выполнение действия в соответствии с условием задачи;
3) порядок вывода:
• исходные массивы,
• сформированный массив, если он был сформирован. В противном случае – соответствующее сообщение.
Помогите, а то не могу сделать
Решение задачи: «Сформировать массив из элементов, больших второго элемента первого массива и положительных элементов второго»
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]); } }
Объяснение кода листинга программы
- Создаются две массивы,
A
иB
, с помощью функцииmalloc()
. - В функции
main()
инициализируется генератор случайных чисел с помощьюsrand(time(NULL))
. - В цикле заполняются массивы
A
иB
с помощью функцииMakeArray()
. - Создается пустой массив
C
для хранения результата. - В функции
MakeArray()
генерируются случайные числа в заданном диапазоне и записываются в массивArray
. - Если элемент массива
A
больше второго элемента массиваA
, то он копируется в массивC
. - Если элемент массива
B
больше нуля, то он копируется в массивC
. - Выводится массив
C
с помощью циклаfor
и функцииprintf()
. - Все выделенные массивы освобождаются с помощью функции
free()
. - Возвращается значение 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д