Ir ao conteúdo
  • Cadastre-se

C Porquê este programa está errado


Danilo Henriq

Posts recomendados

#include <stdio.h>
#include <locale.h>
#define n 20

/*
9) Escreva um algoritmo que lê um vetor A[20] de inteiros apenas com valores distintos (todos
   diferentes). Caso o usuário insira um inteiro já existente, o programa deve alertar a duplicidade.
*/

int main(){

    setlocale(LC_ALL,"portuguese_Brazil");

    int a[n], i=0, j;

    

    do{

    printf("Digite um valor: ");
    scanf("%d", &a[i]);

    int cont = 0;

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

        if(a[i]==a[j]){
            cont++;
        }

    }

    if(cont!=0){
        printf("\nEste valor já foi digitado! \n");
    }


    i++;

    }while(i<n);

    printf("\nLeitura completa\n");




return 0;
}

Galera quando compilo isto ele me retorna todas as vezes a mensagem, "Este valor já foi digitado", mas porquê isto acontece sendo que ele só retornaria isto caso encontra-se um valor igual no vetor e então atribuiria mais um a cont, mais ele faz isto todas as vezes que digito um número.

Link para o comentário
Compartilhar em outros sites

@Danilo Henriq Meu caro, antes de preencher o vetor com a variável, você precisa verificar se ela está no vetor, então use uma variável qualquer no scanf e verifica ela com as demais do vetor. 

Além disso, no 'for' você precisa limitar até i e não n, pois i é a quantidade de variáveis reais que foram preenchidas no final.

E Também dentro do if onde está o cont, imprima a mensagem e abaixo use continue, se não o i++ irá incrementar.

 

P.S: não declare a variável dentro do   do...while, declare no inicio do programa, apenas zere no final.

 

Talvez isso resolva o problema.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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