Сформировать массив из элементов, больших второго элемента первого массива и положительных элементов второго - 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, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д