Ir para conteúdo
Fórum Script Brasil
  • 0

Programa que leia valores inteiros e identifique números repetidos


Elvio Brosovitzki

Pergunta

Esse exercício parece bem fácil, mas acabei empacando mesmo assim. Preciso criar um algoritmo que leia um vetor de 5 posições, e que a cada numero digitado pelo usuário, o programa identifique se o número já foi cadastrado, se sim, dizer ao usuário para digitar outro número. Sendo assim, o programa precisa ler o vetor todas as vezes que o usuário digitar um número. Só que no meu código, acabei travando na leitura do vetor. Agradeço qualquer ajuda. Isso é o que eu tenho, por enquanto:

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

int main (){
    int vetor[5], c, r;
        
    for (c=0;c<5;c++){
        printf ("Digite um numero: ");
        scanf ("%d", &vetor[c]);
             for (r=0;r<5;r++){
                if (vetor[r]==vetor[c]){
                     printf ("Numero já cadastrado, digite outro\n");
                }
            }
        }
    
    for (c=0;c<5;c++){
        printf("%d\n", vetor[c]);            
    } 
     
    return 0;
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

E ai tranquilo?  
Esse programa é bem fácil de fazer continuar tendo números repetidos, mesmo pedindo pro usuário digitar outro.
Então se a proposta do exercício for APENAS pedir pra digitar outro valor, caso a pessoa tenha digitado valores repetidos, esse código aqui deve funcionar:

 

CÓDIGO:

 

#include <stdio.h>
#define TAM 5

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

void pausar ()
{
    printf ("\nPess [ENTER] to continue . . .");
    getchar();
}

int main ()
{
    int v[TAM], i, x, aux;

    for (i = 0; i < TAM; i++)
    {
        printf ("Valor = ");
        scanf ("%d", &v[i]);
        limpar();
    }

    //Percorrer o vetor para achar numeros repetidos

    for (i = 0; i < TAM; i++)
    {
        for (x = i + 1; x < TAM; x++)
        {
            while (v[i] == v[x]) //use 'while' se quiser que a pessoa digite um valor diferente do que se repetiu
                                 //por exemplo se o o valor '1' se repete, e voce estiver usando 'if' a pessoa pode digitar 1 dnv
                                 //já com o while isso não acontece
            {
                printf ("\nO valor %d esta se repetindo!\n", v[i]);
                printf ("Por favor, digite outro valor: ");
                scanf ("%d", &v[i]);
                limpar();
            }
        }
    }
    

    //VETOR GERADO SEM NENHUM NUMERO REPETIDO
    printf ("\nNovo vetor:\n");
    for (i = 0; i < TAM; i++)
    {
        printf ("%d\n", v[i]);
    }
    
    printf ("\n");

    pausar ();
    return 0;
}

 

OBS: Esse código permite que o vetor continue tendo valores repetidos! Ele apenas realiza a proposta do exercício de pedir outro valor, mas o usuário pode facilmente fazer com que continue tendo valores repetidos! 

Entenda esse código! Se só copiar colar e entregar e não tentar entender, você não irá aprender! Então gaste alguns minutos tentando entender, caso não entenda alguma parte, poste ela aqui, que eu tento te explicar melhor, ok?

Editado por princknoby
Correções
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...