Somar dois vetores em C

4 respostas
cprogramação
M

Crie uma função que receba como parâmetros dois vetores de inteiros: x1 e x2 e o valor n que representa o tamanho de ambos os vetores. A função deverá retornar um ponteiro para um terceiro vetor,x3x3, alocado dinamicamente, contendo a soma de x1x1 e x2x2.

int* soma(int * x1, int * x2, int n);

entrada : 8
1 2 3 4 5 6 7 8
1 2 34 5 8 1 4 9
saida:
2 4 37 9 13 7 11 17

//Segue o código

#include “stdio.h”
#include “stdlib.h”

int *soma(int *x1, int *x2, int n){

int i;

int *sum = (int *) malloc(n * sizeof(int));

if(sum == NULL){

printf(Memoria insuficiente\n);

exit(1);

}

for(i = 0; i < n; i++){

sum[i] += x1[i] + x2[i];

}

return sum;

}
int main(){

int i, n;

scanf("%d", &n);

int x1[n];

int x2[n];

for(i = 0; i < n; i++){

scanf("%d", &x1[i]);

}

for(i = 0; i < n; i++){

scanf("%d", &x2[i]);

}

int *resp = soma(x1, x2, n);

for(i = 0; i < n; i++){

printf("%d ", resp);

}

free(resp);

return 0;

}

4 Respostas

M

sum[i] = x1[i] + b[i]
e nao +=

M

ta imprimindo lixo
$ ./main
8
1 2 3 4 5 6 7 8
1 2 34 5 8 1 4 9
25228320 25228320 25228320 25228320 25228320 25228320 25228320 25228320

wldomiciano

O erro está nesta linha:

printf("%d ", resp);

O correto, já que vc quer imprimir indice por indice, seria:

printf("%d ", resp[i]);

Observações extras:

Quando for incluir cabeçalhos da biblioteca padrão, ao invés de usar aspas, por uma questão de convenção, procure fazer assim (com os sinais de maior e menor):

#include <stdio.h>
#include <stdlib.h>

Quando usar o for, procure declarar a variável de controle dentro dele, assim:

for (int i = 0; i < length; i++) { /* ... */ }

Isso pode evitar bugs chatos e é um recurso que está disponivel a partir de C99.

M

Sim, eu li o codigo linha por linha e vi o erro, mas obrigado!
Eu usava < e >, mas meu professor usa " " e eu passe usar assim tbm, não faz diferença.
Os professores do meu curso utilizam o Codebench para listas de exercício e provas e declarar o i, dentro do for, dá um erro de compilação, por isso declaro fora do for.

Criado 2 de outubro de 2019
Ultima resposta 3 de out. de 2019
Respostas 4
Participantes 2