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

armazenar valores aleatórios não repetidos num vetor


b i k a

Pergunta

e ai galera.....

tava procurando uma duvida aqui na net e acabei encontrando esse forum....

pesquisei antes mas não achei exatamente o que eu tava procurando....

meu problema e o seguinte....

eu preciso armazenar em um vetor uma sequencia de numeros aleatorios....

ate ai tudo bem... o problema que eu não estou conseguindo resolver e que esses numeros não podem se repetir....

alguém pode me ajudar com isso?

abraço!

Editado por b i k a
Título alterado por estar em desacordo com as regras do fórum!
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

olha o que eu consegui fazer

eu verifiquei se existia o numero gerado... e se existe gera outro....

mas como faço agora para repetir o teste nesse numero?

obrigado!

int i, j;
    int A[10];
    srand(time(NULL));
    for (i=0; i<5; i++)
    {
       A[i] = rand() % 9;
       for(j=1;j<i;j++)
       if(A[i]==A[j])
       A[i] = rand() % 9;
       printf("%d ", A[i]);
    }

Link para o comentário
Compartilhar em outros sites

  • 0

Isso deveria estar dentro de um loop. Você poderia ter um contador que seria incrementado a cada número inserido no vetor (obviamente ele não seria incrementado quando fosse um valor repetido). Quando esse contador chegasse ao número máximo de elementos no vetor (ou seja, quando este estivesse totalmente preenchido), o loop acabaria.

Sacou? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

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

#define N        10
#define VALIDO   1
#define INVALIDO 0

int main(void){
      int i, j, status;
    int A[N];
    
    srand(time(NULL));

    for (i = 0; i < N; ++i) {
       do {
          A[i] = rand() % N;
          status = VALIDO;
          for (j = 0; j < i; ++j)
             if (A[i] == A[j])
                status = INVALIDO;
       } while (status == INVALIDO);   
       printf("%d ", A[i]);
    }

    return 0;
}
Para deixar o codigo mais rapido:
for (i = 0; i < N; ++i) {
       do {
          A[i] = rand() % N;
          status = VALIDO;
          for (j = 0; (j < i) && (status == VALIDO); ++j)
             if (A[i] == A[j])
                status = INVALIDO;
       } while (status == INVALIDO);  
       printf("%d ", A[i]);
    }

Editado por beradero
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,3k
×
×
  • Criar Novo...