Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Danilo Henriq

C Porquê este programa está errado

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reset o valor da variavel cont após a verificação, se não ela só sera zero uma vez que o if for verdadeiro.

 

abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 34 minutos atrás, Fn1X disse:

    Reset o valor da variavel cont após a verificação, se não ela só sera zero uma vez que o if for verdadeiro.

     

    abs.

    Sim cara mas se você analisar eu já estou resetando, o problema não é este.

    Compartilhar este post


    Link para o post
    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×