Найти в первом массиве максимальное число и все числа, находящиеся до него, записать в третий - C (СИ)
Формулировка задачи:
Помогите пожалуйста с задачей. Дано 2 массива размером от 10 до 20 (рандом), заполненных случайными числами. Найти в первом массиве максимальное число и все числа, находящиеся до него записать в 3ий массив. Во втором массиве найти максимальное число и все числа после него записать в 3ий массив (т.е. переместить к тому что получили из 1ого массива).
Заранее спасибо!
Решение задачи: «Найти в первом массиве максимальное число и все числа, находящиеся до него, записать в третий»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define SIZE 20 /* prototype functions */ void genRandomArray(int count, int array[]); int findMax(int array[], int count); int main() { int arrayA[SIZE] = {0} , arrayB[SIZE] = {0}, posA = 0, posB = 0; int index = 0; int arrayC[SIZE*2], posC = 0, len = 0; srand(time(NULL)); genRandomArray(SIZE, arrayA); genRandomArray(SIZE, arrayB); /* view arrayA and arrayB */ /* arrayA */ printf("ArrayA: "); for(index=0; index < SIZE; index++) printf("%d ", arrayA[index]); printf("\n"); /* arrayB */ printf("ArrayB: "); for(index=0; index < SIZE; index++) printf("%d ", arrayB[index]); printf("\n\n"); posA = findMax(arrayA, SIZE); posB = findMax(arrayB, SIZE); /* get length potential size arrayC */ len = posA + (SIZE - posB); printf("Max in arrayA: %d ArrayA[pos]: %d\nMax in ArrayB: %d ArrayB[pos]: %d\n", posA, arrayA[posA], posB, arrayB[posB]); /* copy arrayA -> arrayC [0..posA] */ for(index = 0; index < posA; index++, posC++){ arrayC[posC] = arrayA[index]; } /* copy arrayB -> arrayC [posB..SIZE] */ for(posB++;posB < SIZE; posB++, posC++){ arrayC[posC] = arrayB[posB]; } /* view arrayC = result */ printf("\nArrayC: "); for(index = 0; index<len-1; index++){ printf("%d ", arrayC[index]); } printf("\n"); return 0; } /* generic random array [size = count]*/ void genRandomArray(int count, int array[]){ int index = 0; for (index = 0; index < count; index++){ array[index] = rand()%99; } } /* find max int value return MAX value pos in array*/ int findMax(int array[], int count){ int index = 0, max = 0, pos = 0; for (max = array[index]; index < 20; index++){ if (max < array[index]){ pos = index; max = array[index]; } } return pos; }
Объяснение кода листинга программы
В этом коде есть три массива целых чисел: arrayA, arrayB и arrayC. Массивы arrayA и arrayB заполняются случайными целыми числами от 0 до 99 с помощью функции genRandomArray. Затем, с помощью функции findMax, в массиве arrayA и arrayB ищутся максимальные числа и их позиции. Далее, создается новый массив arrayC, в который сначала копируются все числа из arrayA до найденной позиции максимума в arrayA, а затем все числа из arrayB, начиная с позиции, следующей за позицией максимума в arrayB. И, наконец, с помощью цикла и функции printf выводятся на экран массивы arrayA, arrayB и arrayC.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д