Trovare il massimo tra due array in C

Nella seguente pagina viene spiegato come creare un programma in C in grado di leggere due vettori o array in input, e di inizializzare un terzo array in cui ogni suo elemento corrisponde al valore massimo tra i corrispondenti elementi dei primi due array.

Procedimento

Prima di tutto abbiamo bisogno di dichiarare tre array (o vettori) di pari dimensione. Per far ciò definiamo con la direttiva #define una macro N, che utilizzeremo per indicare la dimensione di ciascun array. In particolare abbiamo bisogno di inizializzare due di questi array con dei valori arbitrari. Principalmente ci sono due metodi per inizializzare l’array: il primo consiste nell’inizializzare il vettore direttamente nel codice come nel seguente modo:



int A[N] = {3, 6, 2, 9, 0};
int B[N] = {4, 2, 7, 1, 8};

Mentre il secondo metodo consiste nel chiedere all’utente di inserire manualmente da tastiera dei valori per ciascun array, come di seguito:



int A[N], B[N];
    
printf("Inserisci valori per vettore A: ");
for(int i=0; i<N; i++){
    scanf("%d", &A[i]);
}

printf("Inserisci valori per vettore B: ");
for(int i=0; i<N; i++){
    scanf("%d", &B[i]);
}

Invece, il terzo array deve essere solamente dichiarato, in quanto sarà poi il programma ad inizializzarlo con i relativi massimi.
Nello specifico, per poter inizializzare il terzo vettore C, dobbiamo scorrere sia il vettore A che il vettore B in modo da trovare il massimo per ciascuna posizione. Per far questo utilizziamo un ciclo for, in cui ad ogni iterazione controlliamo se il valore contenuto nella posizione i (la variabile del ciclo for) del vettore A è maggiore del valore contenuto nella posizione i del vettore B (A[i] > B[i]). Se questo è vero, allora inseriamo nel vettore C in posizione i, il valore contenuto in A[i] (C[i] = A[i]), mentre se tale condizione non è verificata, allora in posizione i del vettore C inseriamo il valore contenuto nel vettore B (C[i] = B[i]).

In questo modo, al termine dell’esecuzione del ciclo for, il vettore C conterrà il massimo di ciascuna coppia di elementi dei due array iniziali.

Codice completo per trovare il massimo tra due array in C

Di seguito viene riportato il codice intero del programma in grado di trovare il massimo tra due array in C.



#include <stdio.h>
#define N 5

int main(){
    int A[N] = {3, 6, 2, 9, 0};
    int B[N] = {4, 2, 7, 1, 8};
    int C[N];
    
    for(int i=0; i<N; i++){
        if(A[i] > B[i])
            C[i] = A[i];
        else
            C[i] = B[i];
        
        printf("%d ", C[i]);
    }

    return 0;
}


4 6 7 9 8

Indice pagine linguaggio C: