Exercício (Algoritmo MegaSena)

Alguém pode me ajudar a fazer esse algoritmo em java?

Crie uma classe chamada MegaSena com a estrutura definida a seguir:

MegaSena
int[] numerosSorteados
void sortear()
boolean ehReptido(int)
void mostrarBilheteSorteado()

Implemente esta classe com os atributos listados acima e com os métodos conforme definição:

sortear -> realiza o sorteio, gerando os 6 números (não repetidos) e armazena-os no atributo correspondente.

ehRepetido -> método responsável em verificar se um número já existe dentre os números que já foram sorteados, retornando true caso isso ocorra e false caso contrário.

mostrarBilheteSorteado -> mostra os números sorteados do bilhete impressos na tela.

Oi,

http://www.guj.com.br/java/119991-megasena

http://www.guj.com.br/java/202222-codigo-para-gerar-jogo-da-mega-sena-resolvido

Use a busca do forum… :roll:

ta com os link que você me passou tirei algumas duvidas

sendo:

public class MegaSena {
    public int n1;
    public int n2;
    public int n3;
    public int n4;
    public int n5;
    public int n6;

    MegaSena (int n1, int n2, int n3, int n4, int n5, int n6)
    {
     this.n1 = n1;
     this.n2 = n2;
     this.n3 = n3;
     this.n4 = n4;
     this.n5 = n5;
     this.n6 = n6;
    }

    public void Sortear()
    {
        n1 = (int) (Math.random()*60);
        n2 = (int) (Math.random()*60);
        n3 = (int) (Math.random()*60);
        n4 = (int) (Math.random()*60);
        n5 = (int) (Math.random()*60);
        n6 = (int) (Math.random()*60);
    }
    public void mostrarBilhetesSorteados()
    {
        System.out.println("Jogo");
        System.out.println("Numeros Sorteados:"+n1+"-"+n2+"-"+n3+"-"+n4+"-"+n5+"-"+n6);
    }
}

mas ai ainda fica mais uma pergunta, como ficaria se o numero fosse repetido?

eu tive que fazer esse mesmo programa em C, mais a lógica é parecida…tente transformar em java.

[code]#include “stdio.h”
#include “stdlib.h”

//Retorna um novo sorteio para o jogo
int *getSorteio(){
int *sorteados = (int ) malloc(7sizeof(int));
int i;
srand(time(NULL));
do{
for( i=0 ; i<=5 ; i++){
sorteados[i] = (rand() % 59) +1;
}
}while(verificaRepetidos(sorteados));
return sorteados;
}
//verifica se há numeros repetidos no vetor
int verificaRepetidos(int vetor[]){
int i,j;
for(i=1;i<7;i++){
for(j=1;j<i;j++){
if(j!=i){
if(vetor[i]==vetor[j])
return 1;
}
}
}
return 0;
}
// Retorna o sorteio generico de forma ordenada
void ordenaSorteio(int sorteio[]){
int i,aux,action, final=6;

 do{
 action = 0;
    for(i=0;i<final;i++){
           if(sorteio[i] > sorteio[i+1]){
              aux = sorteio[i];
              sorteio[i] = sorteio[i+1];
              sorteio[i+1] = aux;
              action++;
           }
    }
   final--;
}while(action != 0);

}
//realiza impressão de valor por valor do vetor
void imprimeVetor(int vetor[]){
int i;
for(i=1;i<7;i++){
printf("%i \t", vetor[i]);
}
}
// retorna o numero de acertos do usuário
int numeroAcertos(int jogada[],int sorteio[]){
int i,j;
int acertos=0;
for(i=1;i<7;i++){
for(j=1;j<7;j++){
if(jogada[i] == sorteio[j]){
acertos++;
}
}
}
return acertos;
}

int *lerJogo(){
int *jogo = (int ) malloc(6sizeof(int));
int i,j;
int erro=0;
int dezena;
printf(“Entre com suas dezenas\n\n”);
for( i=0 ; i<=5 ; i++){
do{
erro=0;
printf(“Entre com a %i Dezena: “,i+1);
scanf(”%i”,&dezena);
setbuf(stdin, NULL);
if((dezena<1)||(dezena>60)){
printf(“numero invalido\n”);
erro=1;
}
for(j=0;j<=5;j++){
if(dezena == jogo[j]){
printf(“numero repetido\n”);
erro=1;
}
}
}while(erro==1);
jogo[i] = dezena;
}
return jogo;
}

void imprimeGanhos(int i,int *premio){
switch(i){
case 0:
printf(“desista!, nÃo acertou nenhum!!!\n”);
break;
case 1:
printf(“nossa só 1\n”);
break;
case 2:
printf(“ta melhorando acertos: 2\n”);
break;
case 3:
printf(“3 acertos, mais não ganhou nenhum premio!!!\n”);
break;
case 4:
printf(“fez quadra!!, você ganhou R$%i,00!!!\n”,(int) (premio0.001));
*premio = (int) *premio - (premio0.001);
break;
case 5:
printf(“Quina!,agora sim você ganhou R$%i,00!!!\n”,(int) (premio0.01));
*premio = (int) *premio - (premio0.01);
break;
case 6:
printf(“Você é o novo Milionario, Ganhos: R$%i,00 \n”, *premio);
*premio = 0;
break;
}
}

int main(){
int *sorteados;
int *jogo;
char opcao;
int i=1, acertos,premio=0;

jogo = lerJogo();
ordenaSorteio(jogo);
do{
    system("cls");
    printf("Numero do Jogo: %i \t Custo Atual: R$%i,00\n",i,i*2);
    printf("seu Bilhete:\n");
    imprimeVetor(jogo);
    printf("\n");
    printf("numeros Sorteados:\n");
    sorteados = getSorteio();
    ordenaSorteio(sorteados);
    imprimeVetor(sorteados);
    printf("\n");
    acertos = numeroAcertos(jogo,sorteados);
    premio += 2;
    printf("Numero de Acertos: %i\n\n", acertos);
    imprimeGanhos(acertos,&premio);
    i++;
    printf("deseja continuar [ENTER] ou [n] ?");
    scanf("%c",&opcao);
}while(opcao!='n');

}[/code]

Oi,

http://www.guj.com.br/java/222477-resolvido-como-gerar-numeros-aleatorios-sem-repeticao

Desculpe, não entendi quase nada do algoritmo em C

agora vou fazer algumas perguntas básicas, o algoritmo que vai fazer a procura se foi sorteado um numero repetido e trocar o numero, ficaria na classe ou no main?

sou totalmente iniciante!

Obrigado pelas as ajudas

e mais um pergunta o algoritmo que fiz anteriormente esta totalmente errado?

aqui eu tenho duas funções…

a primeira aloca memoria para um novo vetor, e no final retorna os números sorteados

o do…while nele, chama a função e enquanto o vetor conter numeros repetidos, ele volta e sorteia novamente 6 numeros

int *getSorteio(){ int *sorteados = (int *) malloc(7*sizeof(int)); int i; srand(time(NULL)); do{ for( i=0 ; i<=5 ; i++){ sorteados[i] = (rand() % 59) +1; } }while(verificaRepetidos(sorteados)); return sorteados; }

ja nesta função, que é chamada pela função acima, ela faz um teste, assim que ele encontrar um numero repetido ele retorna “TRUE” 1 verdadeiro, caso contrario ele retorna “FALSE” 0 …

int verificaRepetidos(int vetor[]){ int i,j; for(i=1;i<7;i++){ for(j=1;j<i;j++){ if(j!=i){ if(vetor[i]==vetor[j]) return 1; } } } return 0; }