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

Teste de existência de um número randômico


Gui_Arantes

Pergunta

Pessoal, socorro!

Estou tentanto construir uma matriz de tamanho 100x19 com números aleatórios diferentes,

Para testar se o número já existe criei uma função, porém o algoritmo não funciona por nada alguém pode me ajudar? Se possivel deixe programado a alteração qe devo fazer...

Obrigado

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <stdio.h>
#include <conio.h>

using namespace std;

int teste (int pais[100][19], int valor, int x, int z);

void main()
{

int l,c,variavel, resultado;
int pais [100][19];

    srand(time(NULL));

    for (l=0; l<100; l++)
    {
        
        for (c=0; c<19; c++)
        {
            
            while(resultado!=1)
            {
            variavel=rand()%19;
            resultado=teste(pais,variavel,l,c);

            }

            pais[l][c]==variavel;
        }
    }

    for (l=0; l<100; l++)
    {
        
        for (c=0; c<19; c++)
        { cout<<pais[l][c]<<" ,";
        }
        cout<<endl;
    }

}

int teste (int pais[100][19], int valor, int x, int z)
{
    int i,qualquer;
    qualquer=-1;

    for (i=0; i<=z; i++)
    {
        if(z==0 || valor!=pais[x][i])
        {qualquer++;}
    }
        if (qualquer==z)
        {return 1;}

        else
        {return 0;}
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Isso aqui

while(resultado!=1)
Está incorreto, pois a príncipio, resultado não foi inicializado. E ainda, sua lógica está meio confusa. Você quer preencher a matriz com valores que não se repetem? Fazer isso limitando o valor para 19
variavel=rand()%19;
não faz sentido, afinal, a matriz tem 19x100:1900 posições... Se quiser verificar se um valor já existe numa matriz, percorra-a da primeira posição até a posição atual de forma linear (com ponteiros) ao invés de utilizar indexação. Isso evita problemas como o da função teste(). Note que você só verifica a coluna atual, não a linha. Um exemplo de função para verificar se um valor existe numa matriz:
int existeValor(int *inicio, int *atual, int valor){
    while(inicio < atual){
        if(*inicio== valor)
            return(1);
        inicio++;
    }
    return(0);
}

Parametros:

*inicio: ponteiro para o primeiro elemento do vetor.

*atual: ponteiro para o elemento do vetor que está sendo rpeenchido (considerando que os anteriores já foram preenchidos).

valor: valor que está sendo inserido.

Retorna 1 se o valor já existe, ou 0 se não existe.

Bem fácil.

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