Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 35: comunsOrd

Voltar

Defina uma função int comunsOrd (int a[], int na, int b[], int nb) que calcula quantos elementos os vetores a (com na elementos) e b (com nb elementos) têm em comum. Assuma que os vetores a e b estão ordenados por ordem crescente.

Exemplo

> int a[6] = {1, 2, 4, 6, 7, 9};
> int b[5] = {2, 5, 6, 8, 9};
> comunsOrd(a, 6, b, 5)
(int) 3

Resolução

int comunsOrd (int a[], int na, int b[], int nb) {
    int i = 0, j = 0, ans = 0;
    while(i < na && j < nb) {
        if(a[i] == b[j]) {
            ans++;
            i++;
            j++;
        }
        else if(a[i] > b[j]) j++;
        else i++;
    }
    return ans;
}