Ir ao conteúdo

C Alocação dinâmica com ciclo for


Ir à solução Resolvido por Pedrok97,

Posts recomendados

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

int main()
{
    int *vetor;
    int n,i;

    puts("Digite o n: ");
    scanf("%i",&n);



    for (i = 0; i < n; ++i) {
        printf("Digite o valor %i: \n", i+1);
        vetor = malloc((i+1)*sizeof(int));
        scanf("%i", &vetor[i]);
    }

     for (i = 0; i < n; ++i) {
        printf(" %i ", vetor[i]);

    }

    return 0;
}

Estou tentando criar um algoritmo para alocar espaço e um valor num vetor a cada "i" do ciclo, mas quando executo vem lixo em todos os valores.

  • Solução
Postado

Bem, o algoritmo esta funcionando corretamente, você errou na lógica.
Quando você faz "vetor = malloc((i+1)*sizeof(int));" está criando novas variáveis dinamicamente um por cima do outro. Isso faz com que as posições de 0 ate a penúltima dessa variável fiquem com lixo e a ultima fica com o valor que é o ultimo que você colocou no laço. O certo seria colocar o malloc fora do for e adicionar os valores dentro do for.
 

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

for (i = 0; i < n; ++i) {
	printf("Digite o valor %i: \n", i+1);
    scanf("%i", &vetor[i]);
}

 

Se for para deixar o malloc dentro do for, ai você deveria ter outro for dentro para fazer a atribuição dos valores corretamente.

  • Curtir 2

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!