Найти в первом массиве максимальное число и все числа, находящиеся до него, записать в третий - 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.