Ir para o conteúdo
Miguel Correia

Ver se existe elementos repetidos e imprimir-los

Mensagens Recomendadas

Miguel Correia

Boas gente , estou a fazer um exercicio para avaliação em JAva , e o exercicio é fazer o euro milhoes .

Ja está quase tudo feito so me falta comparar os elementos jogados pelo utilizador e os random gerados.

Peguei nos elementos todos so numeros e juntei-os num array e agora queria ver se ha repetidos . Depois fazia igual para as estrelas .

Envio em baixo o codigo .

public static int[] compara () {
Scanner ler = new Scanner(System.in);
int[] lista = apostaUtilizador(); //
int[] rand = euro_M(); // numeros Random
int[] total = new int[10];
for(int i= 0; i < 5;i++){
out.print(lista);
}
for(int j=0; j < 5; j++){
out.print(rand[j]);
}
System.arraycopy(lista,0,total,4,4);
System.arraycopy(rand,0,total,4,4);


return total;

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

deixa ver se esta frase te acende uma luz:

para todos elementos da chave, tens de verificar se o número existe em tobos os elementos escolhidos pelo utilizador


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

copiar ? eu usei essa palavra ? de onde tiraste essa ideia ?

Não é contigo (repara no username ;))


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Miguel Correia

Copia os numeros todos para um array e ve se ha repetidos nesse array.

Nao fez luz, podia explicar melhor sff?

Editado por Miguel Correia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Copia os numeros todos para um array e ve se ha repetidos nesse array.

isso não faz sentido porque como não existe alteração de informação, a necessidade de cópia de valores é irrelevante

Nao fez luz, podia explicar melhor sff?

infelizmente não, isto porque (apesar de ter escrito todos com um 'b') a frase diz claramente o que tens de fazer, e é contra os meus princípios apresentar a solução a quem não apresentou um modelo/algoritmo correcto de solução, demonstrando que o problema não é conhecimento do processo mas sim de implementação.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Miguel Correia

Sim , nao estou a pedir a solução , so quero que me explica melhor o que tenho de fazer. Só isso . O objectivo do forum não é dar soluções ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

está é a frase que te apresentei:

CICLO            - para todos elementos da chave
COMPARAÇÃO DE    - tens de verificar se
ELEMENTO ITERADO - o número existe em
CICLO            - todos os elementos escolhidos pelo utilizador 


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Miguel Correia

ja tentei varias maneiras e nao tou a ver como fazer, isto nao funciona , mas so consegui isto . O que estou a fazer mal?

int[] lista = apostaUtilizador();
int[] rand = euro_M();

int cn=0;
int ce=0;

for(int i=0; i < rand.length-2;i++){
 for(int j=0;j<lista.length-2;j++){
	 if (rand[i] == lista[j]) cn++;
 }
}
out.print("Acertou " + cn +" Numero(s) e acertou " + ce + " Estrelas");
return lista;

}

Editado por Miguel Correia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Miguel Correia

Porque so quero calcular os numeros primeiro e depois as Estrelas . o contador de estrela so esta la para nao me esquecer. Ainda nao calculei

Editado por Miguel Correia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Porque so quero calcular os numeros primeiro e depois as Estrelas . o contador de estrela so esta la para nao me esquecer. Ainda nao calculei

agora responde à primeira pergunta


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Miguel Correia

porque se o array tem dimensao 6 (0..6) = 7 , tiro duas posiçoes e fica 5 para os numeros e depois comparo as estrelas

Editado por Miguel Correia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

e a posição do último índice não tem direito a ser comparada ?

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Miguel Correia
import java.lang.Object;
import java.util.Arrays;
import java.util.Scanner;
import static java.lang.System.out;
import java.util.Random;
public class F2ex9
{ 
  /**Funçao que lê a aposta do Utilizador, numeros*/
   public static int [] apostaUtilizadorN (){
  Scanner ler = new Scanner(System.in); // lê atraves do teclado
  int i;
  int[] fim = new int[6];                  // definir o tamanho do array final

  out.println("Introduza os numeros pretendidos :"); // Printf

  for(i=0; i < 5{// NUMEROS
    int leArray = ler.nextInt();           // scanf
    boolean testa = procuraArray(leArray,fim);// testa se os numeros pertencem ao array

    if (leArray >=1 && leArray <=50 && testa) {
       fim = leArray;
       i++;
   } // se o numero pertençer a sua gama de valores
    else out.println("!!!Numero invalido , introduza outro numero!!!");
   }

   Arrays.sort(fim);//ordena os numeros
   return fim;  // chave ordenada num unico array
 }
 /** aposta do utilizador , estrelas */
 public static int [] apostaUtilizadorE(){
   Scanner ler = new Scanner(System.in);
   int[] estrelas = new int[2];

   out.println("Introduza agora as estrelas pretendias :");
   for(int i=0;i<2{// ESTRELAS
      int e = ler.nextInt();
      boolean testaEstrela = procuraArray(e,estrelas);// testa se as estrelas pertencem ao array

      if(e >=1 && e <=9 && testaEstrela) {
       estrelas = e;
       i++;
       }
       else out.println("!!!Insira outra estrela , numero invalido!!!");
   }
   Arrays.sort(estrelas);
   return estrelas;
   }

 /** Funçao que testa se nao existe elementos repetidos */
 public static boolean procuraArray(int n, int[] nu_es){
    boolean nrepetidos = true;

    for(int ind = 0;ind <= nu_es.length-1;ind++){
     if(nrepetidos){ // se nao é repetidos
           if(nu_es[ind] == n) {
        nrepetidos = false;
       }
      }
   }
    return nrepetidos;
   }
  /** Funçao que calcula os numeros random */
 public static int [] randN (){

   int i;
   int[] fim = new int[6]; // definir o tamanho do array final

   out.println("========== Numeros Sorteados =========="); // Printf

   for(i=0; i < 5{// NUMEROS
     int numeros = sorteia(); // scanf
     boolean testaNumeros = procuraArray(numeros,fim);// testa se os numeros pertencem ao array

     if (numeros >=1 && numeros <=50 && testaNumeros) {
       out.println(numeros);
       fim = numeros;
       i++;
     } // se o numero pertençer a sua gama de valores

    }
   Arrays.sort(fim);//ordena os numeros


   return fim;  // chave ordenada num unico array
   }
   /** Funçao que calcula as estrelas random */
   public static int[] randE(){
   int[] estrelas = new int[2];
   out.println("********** Estrelas Sorteadas **********:");
   for(int i=0;i<2{// ESTRELAS
      int e = sorteia();
      boolean testaEstrela = procuraArray(e,estrelas);// testa se as estrelas pertencem ao array

      if(e >=1 && e <=9 && testaEstrela) {
       out.println(e);
       estrelas = e;
       i++;
       }

   }
   Arrays.sort(estrelas);//ordena os numeros
   return estrelas;  // chave ordenada num unico array
 }
 public static void compara(int[] nU, int[] nR, int[] eU, int[] eR) {
   out.println("========== Numeros em que acertou ==========");

   for(int i = 0; i < nU.length; i++){

    for(int j = 0; j< nR.length; j++) {
       if (nU==nR[j]) out.println(nU);


          }

       }

   out.println("********** Estrelas em que acertou **********");

   for(int i = 0; i < eU.length; i++){

    for(int j = 0; j< eR.length; j++) {
       if (eU==eR[j]) out.println(eU);


                }

       }
 }

 public static int sorteia () {

   Random r = new Random ();
   final int H = 50;
   final int L = 1;
   return (int) (r.nextDouble () * (H-L)) + L;
   }

 public static void main (String [] args){


    int[] nU = apostaUtilizadorN();
    int[] eU = apostaUtilizadorE();
    int[] nR = randN();
    int[] eR = randE();
    compara(nU,eU,nR,eR);

   }
}

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

esse código está relativamente ... fraquinho ...

aqui tens uma boa base para trabalhares e implementares a verificação

(se tiveres dois dedos de testa, verás que o que tens de fazer é bem simples)

import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;

public class Main
{
 /* quantidades de numeros e estrelas a serem sorteados(as) */
 public static final int CHAVE_QUANT_NUMEROS = 5;
 public static final int CHAVE_QUANT_ESTRELAS = 2;

 /* domínio de números a serem sorteados */
 public static final int DOMINIO_NUMEROS_MIN = 1;
 public static final int DOMINIO_NUMEROS_MAX = 50;

 /* domínio de estrelas a serem sorteadas */
 public static final int DOMINIO_ESTRELAS_MIN = 1;
 public static final int DOMINIO_ESTRELAS_MAX = 9;

 public static void main(String[] args)
 {
   /* listas com números e estrelas que o jogador seleccionou */
   int[] numeros = new int[CHAVE_QUANT_NUMEROS];
   int[] estrelas = new int[CHAVE_QUANT_ESTRELAS];

   /* listas com números e estrelas que o computador escolhei ao acaso */
   int[] lottery_numeros = new int[CHAVE_QUANT_NUMEROS];
   int[] lottery_estrelas = new int[CHAVE_QUANT_ESTRELAS];

   /* pedir os números e estrelas ao jogador */
   request(numeros, estrelas);

   /* escolher os números e estrelas */
   lottery(lottery_numeros, lottery_estrelas);
 }

 protected static void output(int[] numeros, int[] estrelas)
 {
   /* ciclo de apresentação dos números */
   for (int indice = 0; indice < CHAVE_QUANT_NUMEROS; indice++)
   {
     /* verificação se é o início da apresentação ou o meio */
     if (indice == 0)
     {
       System.out.print("Números [ ");
     }
     else
     {
       System.out.print(", ");
     }

     /* apresentar o número somente se for válido */
     if (numeros[indice] != DOMINIO_NUMEROS_MIN - 1)
     {
       System.out.print(numeros[indice]);
     }
   }
   System.out.print("]");

   /* ciclo de apresentação das estrelas */
   for (int indice = 0; indice < CHAVE_QUANT_ESTRELAS; indice++)
   {
     /* verificação se é o início da apresentação ou o meio */
     if (indice == 0)
     {
       System.out.print(" Estrelas [ ");
     }
     else
     {
       System.out.print(", ");
     }

     /* apresentar a estrela somente se for válida */
     if (estrelas[indice] != DOMINIO_ESTRELAS_MIN - 1)
     {
       System.out.print(estrelas[indice]);
     }
   }
   System.out.print("]");
 }

 protected static void request(int[] numeros, int[] estrelas)
 {
   int indice, valor;
   Scanner scanner = new Scanner(System.in);

   /* preencher as listas com valores inválidos menores que o menor valor do domínio
    * isto é importante para manter a ordenação da lista */
   Arrays.fill(numeros, DOMINIO_NUMEROS_MIN - 1);
   Arrays.fill(estrelas, DOMINIO_ESTRELAS_MIN - 1);

   /* ciclo de inserção de números */
   indice = 0;
   do
   {
     /* pedir o número ao jogador */
     System.out.print("Insira o " + (indice + 1) + "o número (MIN = " + DOMINIO_NUMEROS_MIN + ", MAX = " + DOMINIO_NUMEROS_MAX + ") : ");
     if (scanner.hasNextInt())
     {
       valor = scanner.nextInt();

       /* verificar se faz parte do domínio de números */
       if (valor < DOMINIO_NUMEROS_MIN || valor > DOMINIO_NUMEROS_MAX)
       {
         System.out.println("Valor inválido : " + valor);
       }
       else
       {
         /* verificar se já se encontra registado */
         if (Arrays.binarySearch(numeros, valor) > 0)
         {
           System.out.println("Número já registado : " + valor);
         }
         else
         {
           /* inserir o valor na lista de números registados mantendo a ordenação */
           numeros[CHAVE_QUANT_NUMEROS - indice - 1] = valor;
           Arrays.sort(numeros);
           indice++;

           /* apresentar chave seleccionada */
           System.out.print("O número (" + valor + ") foi registado com sucesso : ");
           output(numeros, estrelas);
           System.out.println();
         }
       }

       /* limpar o buffer de leitura */
       scanner.nextLine();
     }
     else
     {
       System.out.println("Valor inválido : " + scanner.next());
     }
   } while (indice < CHAVE_QUANT_NUMEROS);

   /* ciclo de inserção de estrelas */
   indice = 0;
   do
   {
     /* pedir a estrela ao jogador */
     System.out.print("Insira a " + (indice + 1) + "a estrela (MIN = " + DOMINIO_ESTRELAS_MIN + ", MAX = " + DOMINIO_ESTRELAS_MAX + ") : ");
     if (scanner.hasNextInt())
     {
      valor = scanner.nextInt();

       /* verificar se faz parte do domínio de estrelas */
       if (valor < DOMINIO_ESTRELAS_MIN || valor > DOMINIO_ESTRELAS_MAX)
       {
         System.out.println("Valor inválido : " + valor);
       }
       else
       {
         /* verificar se já se encontra registada */
         if (Arrays.binarySearch(estrelas, valor) > 0)
         {
           System.out.println("Estrela já registada : " + valor);
         }
         else
         {
           /* inserir o valor na lista de estrelas registadas mantendo a ordenação */
           estrelas[CHAVE_QUANT_ESTRELAS - indice - 1] = valor;
           Arrays.sort(estrelas);
           indice++;

           /* apresentar chave seleccionada */
           System.out.print("A estrela (" + valor + ") foi registada com sucesso : ");
           output(numeros, estrelas);
           System.out.println();
         }
       }

       /* limpar o buffer de leitura */
       scanner.nextLine();
     }
     else
     {
       System.out.println("Valor inválido : " + scanner.next());
     }
   } while (indice < CHAVE_QUANT_ESTRELAS);

   scanner.close();
 }

 protected static void lottery(int[] numeros, int[] estrelas)
 {
   int[] tombola_numeros = new int[DOMINIO_NUMEROS_MAX - DOMINIO_NUMEROS_MIN + 1];
   int[] tombola_estrelas = new int[DOMINIO_ESTRELAS_MAX - DOMINIO_ESTRELAS_MIN + 1];

   /* preencher a tombola com os valores do domínio dos números */
   for (int indice = 0; indice < tombola_numeros.length; indice++)
   {
     tombola_numeros[indice] = DOMINIO_NUMEROS_MIN + indice;
   }
   /* baralhar a tombola */
   shuffle(tombola_numeros);

   /* preencher a tombola com os valores do domínio das estrelas */
   for (int indice = 0; indice < tombola_estrelas.length; indice++)
   {
     tombola_estrelas[indice] = DOMINIO_ESTRELAS_MIN + indice;
   }
   /* baralhar a tombola */
   shuffle(tombola_estrelas);

   /* escolher os números e as estrelas */
   numeros = Arrays.copyOf(tombola_numeros, CHAVE_QUANT_NUMEROS);
   estrelas = Arrays.copyOf(tombola_estrelas, CHAVE_QUANT_ESTRELAS);
 }

 protected static void shuffle(int[] array)
 {
   Random random = new Random();

   /* ciclo de "baralhação" */
   for (int indice = 0; indice < array.length - 1; indice++)
   {
     /* escolher um número aleatório da secção da lista ainda não alterada */
     int swap = random.nextInt(array.length - indice) + indice;

     /* inserir o elemento selecionado na secção de elementos baralhados */
     int aux = array[indice];
     array[indice] = array[swap];
     array[swap] = aux;
   }
 }
}

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LuisMendes330

Também tenho de fazer um exercício idêntico.

Não tou a perceber aqui esta parte:

protected static void lottery(int[] numeros, int[] estrelas)
{
int[] tombola_numeros = new int[DOMINIO_NUMEROS_MAX - DOMINIO_NUMEROS_MIN + 1];
int[] tombola_estrelas = new int[DOMINIO_ESTRELAS_MAX - DOMINIO_ESTRELAS_MIN + 1];

/* preencher a tombola com os valores do domínio dos números */
for (int indice = 0; indice < tombola_numeros.length; indice++)
{
    tombola_numeros[indice] = DOMINIO_NUMEROS_MIN + indice;
}
/* baralhar a tombola */
shuffle(tombola_numeros);

Está completo aqui o código?

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Está completo aqui o código?

claro que não ... está o suficiente para que faças o que perguntas no primeiro post


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.