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