Enviado em 24/03/2018 - 12:18h
Pessoal se puderem me ajudar. O problema é o seguinte:
Crie uma função que receba como parâmetros dois vetores de inteiros, v1 e v2, e as suas
respectivas quantidades de elementos, n1 e n2. A função deverá retornar um ponteiro para
um terceiro vetor, v3, com capacidade para (n1 + n2) elementos, alocado dinamicamente,
contendo a união de v1 e v2. Em seguida, crie a função principal do programa para chamar a função união passando dois
vetores informados pelo usuário (ou declarados estaticamente). Em seguida, o programa
deve exibir na tela os elementos do vetor resultante. O cabeçalho dessa função deverá ser o seguinte:
int* uniao(int *v1, int n1, int *v2, int n2);
O meu problema é que não estou conseguindo atribuir os valores dos vetores v1 e v2 para o vetor v3 com essa atribuição: (v3+i) = *(v1+i);
Crie uma função que receba como parâmetros dois vetores de inteiros, v1 e v2, e as suas
respectivas quantidades de elementos, n1 e n2. A função deverá retornar um ponteiro para
um terceiro vetor, v3, com capacidade para (n1 + n2) elementos, alocado dinamicamente,
contendo a união de v1 e v2. Em seguida, crie a função principal do programa para chamar a função união passando dois
vetores informados pelo usuário (ou declarados estaticamente). Em seguida, o programa
deve exibir na tela os elementos do vetor resultante. O cabeçalho dessa função deverá ser o seguinte:
int* uniao(int *v1, int n1, int *v2, int n2);
O meu problema é que não estou conseguindo atribuir os valores dos vetores v1 e v2 para o vetor v3 com essa atribuição: (v3+i) = *(v1+i);
#include <stdio.h>
#include <stdlib.h>
int* uniao(int *v1, int n1, int *v2, int n2){
int soma = n1 + n2;
int i=0, j=0;
int *v3 = (int *) malloc(soma * sizeof(int));
for(i=0; i<3; i++){
(v3+i) = *(v1+i);
}
for(i=3; i<6; i++){
(v3+i) = *(v2+i-3);
}
int temp = v3[0];
for(i=0; i<3; i++){
for(j=i; j<6; j++){
if((v3+j) < (v3+i)){
temp = (v3+i);
(v3+j) = (v3+i);
(v3+i) = temp;
}
}
}
}
int main(){
int v1[3], v2[3], v3[6], n1, n2;
for(int i=0; i<3; i++){
printf("Digite os valores para o vetor 1: ");
scanf("%d", (v1+i));
}
for(int i=0; i<3; i++){
printf("Digite os valores para o vetor 2: ");
scanf("%d", (v2+i));
}
uniao(v1, 3, v2, 3);
for(int i=0; i<3; i++){
printf("%d\n", *(v3+i));
}
free(v3);
}