Crie uma função para somar dois arrays. Esta função deve receber dois arrays e retornar a soma em um terceiro array. Caso o tamanho do primeiro e segundo array seja diferente então a função retornará ZERO (0). Caso a função seja concluída com sucesso a mesma deve retornar o valor UM (1). Utilize aritmética de ponteiros para manipulação do array.

Passo 1

O enunciado pede uma função em C que receba dois vetores (arrays) e seus tamanhos, some elemento a elemento usando aritmética de ponteiros e coloque o resultado num terceiro vetor. Se os tamanhos forem diferentes, retorna 0; se tudo ocorrer bem, retorna 1.

Passo 2

Para começar, vamos definir o protótipo da função. Precisamos de cinco parâmetros: ponteiros para os três arrays (onde o terceiro guarda a soma) e dois inteiros que informam o tamanho de cada um dos dois primeiros arrays. Por exemplo:
int soma_arrays(int *a, int *b, int *c, int n1, int n2);

Passo 3

O primeiro passo dentro da função é verificar se os tamanhos n1 e n2 são iguais. Se forem diferentes, a gente não faz a soma e retorna 0 imediatamente.

Passo 4

Se os tamanhos forem iguais, declaramos três ponteiros auxiliares que vão percorrer cada array. Inicializamos pa = a, pb = b e pc = c. Em seguida, entramos num laço que itera n1 vezes (ou n2, já que são iguais). A cada iteração fazemos *pc = *pa + *pb e depois incrementamos pa, pb e pc.

Passo 5

Depois de percorrer todo o array, significa que a soma foi concluída com sucesso. Então a gente retorna 1 para indicar sucesso.

Resposta

#include <stdio.h>
int soma_arrays(int *a, int *b, int *c, int n1, int n2) {
if (n1 != n2) {
return 0; // tamanhos diferentes, erro
}
int *pa = a;
int *pb = b;
int *pc = c;
int i;

for (i = 0; i < n1; i++) {
    *pc = *pa + *pb;  // soma elemento a elemento
    pa++;
    pb++;
    pc++;
}

return 1;  // sucesso
}
// Exemplo de uso:
int main() {
int x[] = {1, 2, 3};
int y[] = {4, 5, 6};
int z[3];
int resultado = soma_arrays(x, y, z, 3, 3);
if (resultado) {
    printf("Soma realizada: ");
    for (int i = 0; i < 3; i++) {
        printf("%d ", z[i]);
    }
    printf("\n");
} else {
    printf("Tamanhos diferentes, não foi possível somar.\n");
}

return 0;
}

Exercícios relacionados