Ir ao conteúdo

C Exercicio de Alocação Dinamica


Ir à solução Resolvido por felipegf,

Posts recomendados

Postado

To com duvida nesse exercicio da faculdade.

Nao to conseguindo fazer esse terceiro vetor, ta imprimindo um valor errado, n sei se a solução esta certa também 

 

Faça um programa que crie e preencha dois vetores dinâmicos, de números inteiros, com tamanhos estipulados pelo usuário. Após a leitura dos dois vetores, o programa deve criar um terceiro vetor, dinamicamente, que tenha um tamanho para permitir a união dos dois vetores inicialmente criados. Faça essa união e exiba o vetor resultante.

<CODE>

 

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

int main (){
    int *v,*v2,*vF;
    int qtde,i,qtde2,qtdeF;
    
    
    printf("Informe o tamanho do primeiro vetor: ");
    scanf("%d", &qtde);
     v = (int*) malloc(qtde*sizeof(int));
     
    if(v==NULL){
        printf("Nao foi possivel alocar espaco!");
        exit(0);
    }
    for (i=0; i<qtde;i++){
         printf("Informe um numero: ");
         scanf("%d", &v[i]);    
    }
    
    for (i=0;i<qtde;i++){
        printf("%d", v[i]);
    }


    
    printf("\n Informe o tamanho do segundo vetor: ");
    scanf("%d", &qtde2);
     v2 = (int*) malloc(qtde2*sizeof(int));
     
    if(v2==NULL){
        printf("Nao foi possivel alocar espaco!");
        exit(0);
    }
    for (i=0; i<qtde2;i++){
         printf("Informe um numero: ");
         scanf("%d", &v2[i]);    
    }
    
    for (i=0;i<qtde2;i++){
        printf("%d", v2[i]);
    }
    
    qtdeF = qtde + qtde2;
    
    vF = (int*) malloc(qtdeF*sizeof(int));
    
    if(vF==NULL){
        printf("Nao foi possivel alocar espaco!");
        exit(0);
    }
    
    printf("\n Vetor final\n");
    for (i=0;i<qtdeF;i++){
        printf("%d", vF[i]);
    }
    
}
 

  • Solução
Postado

O que está errado é que faltou você copiar dos dois vetores pro final. Se você printar sem copiá-los, vai estar printando lixo da memória, que atualmente está no lugar em que o vetor final se encontra na memória.

Dá pra fazer simples da seguinte forma:

for(int i = 0; i < qtde; i++) vF[i] = v[i];
for(int i = 0; i < qtde2; i++) vF[i+qtde] = v2[i];

Lembre-se de colocar um espaço entre os números no print, senão ele junta todos. Pode ser esse o "valor errado" que você está vendo.

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!