Ir ao conteúdo

C Erro de lógica em C


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

Postado

Fiz um algoritmo para o usuario digitar a quantidade de elementos que deseja, passando para um vetor assim o usuario digita os elementos a serem colocados nesse vetor, e criando outro para de forma inversa. 

o codigo roda mas apresenta lixo de memoria  ou a logica esta incorreta. alguem pode me ajudar?

#include <stdio.h>
#include <stdlib.h>
#define TAM 1000 //define constante


int main() {
    int x, m1[TAM], i = 0;


    printf("TAMANHO MAXIMO 1000 \n");
    printf("Digite a quantidade de elementos para o vetor X\n");
    scanf("%d", &x);

    printf("\nDigite %d elementos para o vetor X: \n", x);
    //ler valores para o primeiro vetor
    for (i = 0; i < x; i++) {
        scanf("\n%d", &m1[i]);

}
   printf("\n%d elementos para o vetor inverso: \n", x);

fflush(stdin);
  for (i = x; i >= 0; i--)
    {
        printf("%d\n", m1[i]);
    }
printf("\n\n");


    return 0;
}

 

  • Solução
Postado

@carlinhos andrade

1 hora atrás, carlinhos andrade disse:



fflush(stdin);

O comportamento de fflush() para fluxos de entrada é indefinido, não o use dessa forma.

Talvez isso sirva no lugar:

int ch;
do {
    ch = fgetc(stdin);
} while (ch != EOF && ch != '\n');

É o que eu costumo usar, mas claro que existem várias outras formas de limpar o buffer.

É bem simples: fgetc() lê o caractere presente na posição atual do fluxo interno. Após a leitura, a posição atual é avançada para o próximo caractere, e isso se repete enquanto a condição do while for verdadeira.

 

1 hora atrás, carlinhos andrade disse:

o codigo roda mas apresenta lixo de memoria  ou a logica esta incorreta. alguem pode me ajudar?

É lógica incorreta mesmo.

Se, por exemplo, eu tenho um vetor com largura 3, e o índice começa em 0, então o mesmo vai até 2.

Logo, se eu insiro 3 como a quantidade de elementos para o vetor, o índice i tem que começar em x-1, que corresponde a 2, no segundo loop for.

  • 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...