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);
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
}
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);
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;
}