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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы