Jogo do par ou impar

7 respostas
S

Antonio e Maria fanaticos pela brincadeira fizeram uma variação do jogo, ao invés de usarem os dedos, cada um anota em um pedaço de papel o numero escolhido, Antonio sempre escolhe par, e Maria impar.
Sua tarefa é escrever uma programa que identifique o vencedor de cada jogada, considerando que o jogo pode ter varias jogadas consecutivas.
Exemplo :
Antonio 1 10 3
Maria 1 10567 4
A saida deve mostrar: Maria ganhou.

Alguem poderia me ajudar com a solução desse problema ? Estou começando agora com a linguagem e não faço a menor ideia por onde começar.

7 Respostas

rdgms

Ola…
Codigo para ler um valor

Scanner in = new Scanner(System.in);
int numero = Integer.parseInt(in.nextLine());

Codigo para Imprimir um valor

System.out.println("mensagem");

Exemplo de condicional ;

if (1==1)
   // caso  1 for igual a 1
else
   // caso  1 não for igual a 1

Acho que com isso voce consegue começar
Não sei se é esse o caso mas não venha no forum para resolver probleminha de escola venha para tirar duvidas.
^^

Lavieri

mais uma coisa que vc vai precisar

java.util.Math.random(); para pegar um valor randomico… por exemplo

Math.random() cria um valor randomico entre 0 e 1, este valor é um double, quando queremos um número
inteiro em um intervalo, fazemos assim

int intervalo = 100
double randomico = Math.random() * intervalo …

assim teremos um numero entre 0 e 100, pois o intervalo maximo é 100, porem ainda assim o número será um double, se queremos um interio então fazemos
int randomico = (int) Math.random() * intervalo;

porem não sabemos c este valor randomico é par ou impar… para isso podemos fazer randomico%2 … isso pega o resto da divisão por 2, qualquer número par, divido por 2 tem resto = 0, quando o resto é igual a 1 ele é impar, portanto para garantir 100% que um número seja par so fazer:
randomico = randomico - randomico%2
neste caso se o resto da divisao por 2 for 1, ou seja se o número for impar, ele simplismente subtrai o resto, fazendo o número virar par.

para garantirmos que um número seja impar é so fazer
randomico = randomico - randomico%2 + 1
nesta caso a 1° parte tranforma o numero num par, e sabemos que somando 1 o número vira automaticamente impar ^^

import java.util.Math;

//Classe para criar inteiros randomicos ate o maximo valor definido
public class RandomParImpar {
    /**
     * guarda o valor maximo
     */
    private final int maximoValue;
    
    /**
     * Cria uma classe para randomizar inteiros de 0 ao valor maximo definido no parametro
     */
    public RandomParImpar(int maximoValue) {
       this.maximoValue = maximoValue;
    }    

    /**
     * Cria um valor randomico PAR entre 0 e maximoValue
     */
    public int createRandomPar() {
        int result = (int) (maximoValue * Math.random());
        return result - result%2;
    }
    /**
     * Cria um valor randomico IMPAR entre 1 e maximoValue
     */
    public int createRandomImpar() {
        int result = createRandomPar();
        return (result == 0) ? result + 1 : result - 1;
    }
}

//modo de usar RandomParImpar random = new RandomParImpar(1000); int par = random.createRandomPar(); int impar = random.createRandomImpar();

Lavieri

minha sugestão…

crie um número randomico de 0 a 9, para saber a quantidade de jogadas para tal use Math.random()*9

crie 2 contadores, um para cada jogador int contadorMaria = 0, int contadorAntonio = 0;

faça um for de 0 ate o valor randomico encontrado de 0 a 9…

dentro do laço deste for, crie um valor randomico impar para maria, crie um valor randomico par para antonio … imprima o valor de Antonio
e o valor de maria…
faça um
if (valorMaria > valorAntonio)
contadorMaria++; //para acrecentar uma vitoria a maria
else
contadorAntonio++; //para acrecentar uma vitoria a Antonio

no fim depois de todas as jogadas faça
if (contadorMaria > contadorAntonio) //imprima vitoria da maria
else if (contadorMaria < contadorAntonio) //imprima vitoria para antonio
else //imprima empate

boa sorte ^^

Marky.Vasconcelos

Sugiro não usar Maath.random()… seu numero fica limitado a 0,0 até 1,0

Use a classe Random.

Código com Random

Random rdm = new Random();
int i = rdm.nextInt(10);//10 é o maior numero que pode sair.. voce pode passar qualquer valor aqui.
M

Mark_Ameba:
Sugiro não usar Maath.random()… seu numero fica limitado a 0,0 até 1,0

Use a classe Random.

Código com Random

Random rdm = new Random(); int i = rdm.nextInt(10);//10 é o maior numero que pode sair.. voce pode passar qualquer valor aqui.

Concordo, e só pra complementar, se precisar usar vários números aleatórios, use o mesmo objeto Random. Por exemplo:

Random rdm = new Random();
int i = rdm.nextInt();
int j = rdm.nextInt(18);
int k = rdm,nextInt(111);
// e assim por diante

O código acima é bem mais limpo e eficaz do que criar uma instância diferente para cada valor aleatório.

Lavieri

Mark_Ameba:
Sugiro não usar Maath.random()… seu numero fica limitado a 0,0 até 1,0

Use a classe Random.

Código com Random

Random rdm = new Random(); int i = rdm.nextInt(10);//10 é o maior numero que pode sair.. voce pode passar qualquer valor aqui.

apenas pra deixar claro não pense que é limitado a 1 digito de precisão e sim de 0 a 1, … mostrando um exemplo

for (int i = 0; i < 10; i++) { System.out.println(Math.random()); /** resultado 0.3221071459566204 0.3956115162334273 0.30232027146504614 0.8006023548575155 0.5815611228973165 0.3689026530772844 0.02028901946248096 0.5975779259434774 0.4477797441183786 0.16270381102236453 */

se vc multiplicar por seu limite… o range passa a ser de 0 a numero que vc multiplicou

por exemplo

for (int i = 0; i < 10; i++) { System.out.println(Math.random()*100); /** resultados 43.919414077041395 55.235049480296496 1.4179158456137375 3.3952476276069676 3.062028311536702 60.80500081237346 49.97179061103898 62.51162047108766 73.44652398225227 43.36679921597513 */

e se quiser inteiro, só castar (int) antes

… mas não há problemas de usar a classe Random … afinal… Math.random() usa exatamente uma classe random e o método nextDouble()

Marky.Vasconcelos

Lavieri:
Mark_Ameba:
Sugiro não usar Maath.random()… seu numero fica limitado a 0,0 até 1,0

Use a classe Random.

Código com Random

Random rdm = new Random(); int i = rdm.nextInt(10);//10 é o maior numero que pode sair.. voce pode passar qualquer valor aqui.

apenas pra deixar claro não pense que é limitado a 1 digito de precisão e sim de 0 a 1, … mostrando um exemplo

for (int i = 0; i < 10; i++) { System.out.println(Math.random()); /** resultado 0.3221071459566204 0.3956115162334273 0.30232027146504614 0.8006023548575155 0.5815611228973165 0.3689026530772844 0.02028901946248096 0.5975779259434774 0.4477797441183786 0.16270381102236453 */

se vc multiplicar por seu limite… o range passa a ser de 0 a numero que vc multiplicou

por exemplo

for (int i = 0; i < 10; i++) { System.out.println(Math.random()*100); /** resultados 43.919414077041395 55.235049480296496 1.4179158456137375 3.3952476276069676 3.062028311536702 60.80500081237346 49.97179061103898 62.51162047108766 73.44652398225227 43.36679921597513 */

e se quiser inteiro, só castar (int) antes

… mas não há problemas de usar a classe Random … afinal… Math.random() usa exatamente uma classe random e o método nextDouble()

E eu disse que é limitado a um digito?

Criado 29 de janeiro de 2009
Ultima resposta 5 de fev. de 2009
Respostas 7
Participantes 5