Exercicio de logica

9 respostas
G

Alguem poderia ajudar nesse algoritmo: Crie um programa que lê três inteiros e informa VERDADEIRO se apenas o maior deles é par
ou se o menor deles é ímpar ou informa FALSO em caso contrário.

9 Respostas

Lavieri

par é quando o resto da divisao por 2 é 0

fazer o maior é facil … é so testar via > … a classe Collections tem suporte a isso tb se vc quiser, ou é a classe Math (não lembro)

pra ler use a classe Scanner tente começar q eu ajudo

G
Lavieri:
par é quando o resto da divisao por 2 é 0

fazer o maior é facil ... é so testar via > ... a classe Collections tem suporte a isso tb se vc quiser, ou é a classe Math (não lembro)

pra ler use a classe Scanner tente começar q eu ajudo

cara eu fiz assim(vc n sabe outra maneira de resolver?):

package exercicio;

import java.util.Scanner;

/*Crie um programa que lê três inteiros e informa VERDADEIRO se apenas o maior deles é par
 ou se o menor deles é ímpar ou informa FALSO em caso contrário.*/

public class Exerc01 {
	private Scanner input = new Scanner(System.in);

	private int maior, menor;

	public boolean obter() {
		boolean resp = false;
		System.out.println("Digite 3 numeros: ");
		int n1 = Integer.parseInt(input.next());
		int n2 = Integer.parseInt(input.next());
		int n3 = Integer.parseInt(input.next());

		if ((n1 > n2) && (n1 > n3)) {
			maior = n1;
			if ((maior % 2 == 0) && (n2 % 2 == 1) && (n3 % 2 == 1))
				resp = true;
		}
		if ((n2 > n1) && (n2 > n3)) {
			maior = n2;
			if ((maior % 2 == 0) && (n1 % 2 == 1) && (n3 % 2 == 1))
				resp = true;
		}
		if ((n3 > n1) && (n3 > n2)) {
			maior = n2;
			if ((maior % 2 == 0) && (n1 % 2 == 1) && (n2 % 2 == 1))
				resp = true;
		}

		if ((n1 < n2) && (n1 < n3)) {
			menor = n1;
			if ((menor % 2 == 1) && (n2 % 2 == 0) && (n3 % 2 == 0))
				resp = true;
		}
		if ((n2 < n1) && (n2 < n3)) {
			menor = n2;
			if ((menor % 2 == 1) && (n1 % 2 == 0) && (n3 % 2 == 0))
				resp = true;
		}
		if ((n3 < n1) && (n3 < n2)) {
			menor = n3;
			if ((menor % 2 == 1) && (n1 % 2 == 0) && (n2 % 2 == 0))
				resp = true;
		}


		System.out.printf("Maior: %d\nMenor: %d", maior, menor);
		return resp;

	}

	public static void main(String args[]) {
		Exerc01 e = new Exerc01();
		if (e.obter())
			System.out.printf("\nResposta VERDADEIRA");
		else
			System.out.printf("\nResposta FALSO");
	}

}
K

descubra qual é o maior 1º, dps veja quais elementos são pares e de a resposta.

Diego_Fontenele

fala guilhr,

o que eu entendi é isso aqui:

public static void main(String[] args) {
        // TODO code application logic here
        Scanner sc= new Scanner(System.in);

        int num=0;
        int maior=0;
        String resultado=null;

        
        System.out.println("Insira 3 numeros");
        for(int i=0; i<3; i++){

            num=sc.nextInt();
                if(maior<num){
                 maior=num;
                }
            if(maior%2==0){
            resultado = "Verdadeiro";
            }else{
            resultado = "Falso";
            }
           
        }
        System.out.println(resultado);
    }

se tiver faltanto algo me fale que eu te ajudo! flwwww
segundo o anunciado O maior OU o menor serem pares= VERDADEIRO
caso contrario = FALSO.

Lavieri
guilhr:
Lavieri:
par é quando o resto da divisao por 2 é 0

fazer o maior é facil ... é so testar via > ... a classe Collections tem suporte a isso tb se vc quiser, ou é a classe Math (não lembro)

pra ler use a classe Scanner tente começar q eu ajudo

cara eu fiz assim(vc n sabe outra maneira de resolver?):

tem assim

vc pode criar esse método pra te auxiliar
public int max(int ... values) {
     int max = values[0];
     for(int v : values)
          max = Math.max(max,v);
     return max;
}

public boolean isPar(int value) {
    return value % 2 == 0;
}

ai é so fazer

if (isPar(max(n1,n2,n2)))
      //....

EDIT.:

se vc não quiser usar a classe Math (o que não tem nada de +) ... vc tb pode implementar o método de pegar o valor maximo assim

public int max(int ... values) {   
     int max = values[0];   
     for(int v : values)   
          max = (v > max) ? v : max;   
     return max;   
}
G

Diego Fontenele:
fala guilhr,

o que eu entendi é isso aqui:

public static void main(String[] args) {
        // TODO code application logic here
        Scanner sc= new Scanner(System.in);

        int num=0;
        int maior=0;
        String resultado=null;

        
        System.out.println("Insira 3 numeros");
        for(int i=0; i<3; i++){

            num=sc.nextInt();
                if(maior<num){
                 maior=num;
                }
            if(maior%2==0){
            resultado = "Verdadeiro";
            }else{
            resultado = "Falso";
            }
           
        }
        System.out.println(resultado);
    }

se tiver faltanto algo me fale que eu te ajudo! flwwww
segundo o anunciado O maior OU o menor serem pares= VERDADEIRO
caso contrario = FALSO.

cara, o programa tem com saida: se somente maior for PAR (entre os 3 numero) a resposta é Verdadeira OU o somente menor for IMPAR a resposta tambem é verdadeira

Diego_Fontenele

Caro guilhr,

eu pensei que era um ou outro, se o maior numero for par OU menor numero for impar = VERDADEIRO
se o maior numero for impar OU o menor numero for par = FALSO.

ai fiz um ou outro não precisa ser absolutamente os dois para ser verdadeiro pelo menos é assim que está no seu eniciado.

flw se não for isso me avise que eu faço o programinha de outro jeito!!!
de qualquer forma é bem simples esse algoritmo.

flwww!

G

Diego Fontenele:
Caro guilhr,

eu pensei que era um ou outro, se o maior numero for par OU menor numero for impar = VERDADEIRO
se o maior numero for impar OU o menor numero for par = FALSO.

ai fiz um ou outro não precisa ser absolutamente os dois para ser verdadeiro pelo menos é assim que está no seu eniciado.

flw se não for isso me avise que eu faço o programinha de outro jeito!!!
de qualquer forma é bem simples esse algoritmo.

flwww!

Diego, é isso mesmo q vc entendeu, mas tem um restrição:
se o MAIOR numero for PAR, para a resposta ser VERDADEIRA os outros 2 numeros menores não pode ser PAR.
OU
se o MENOR numero for IMPAR, para a resposta ser VERDADEIRA os outros 2 numeros maiores não pode ser IMPAR.

Lavieri
guilhr:
Diego, é isso mesmo q vc entendeu, mas tem um restrição: se o MAIOR numero for PAR, para a resposta ser VERDADEIRA os outros 2 numeros menores não pode ser PAR. OU se o MENOR numero for IMPAR, para a resposta ser VERDADEIRA os outros 2 numeros maiores não pode ser IMPAR.

ahh agora eu entendi ^^ ai fica facil...

public class Main {
    public static void main(String ... args) {
        List<Integer> numeros = new ArrayList<Integer>();
        Scanner input = new Scanner(System.in);
        System.out.println("Digite 3 numeros: ");
        numeros.add(Integer.parseInt(input.next()));
        numeros.add(Integer.parseInt(input.next()));
        numeros.add(Integer.parseInt(input.next()));
        System.out.println(teste(numeros));

    }

    public static boolean teste(Collection<Integer> numeros) {
        boolean maxIsPar = Collections.max(numeros) % 2 == 0;
        boolean minIsImpar = Collections.min(numeros) % 2 != 0;
        return maxIsPar && minIsImpar;
    }
}

em resumo.... sempre que o menor for impar e o maior for par, sera verdadeiro

Criado 11 de março de 2009
Ultima resposta 11 de mar. de 2009
Respostas 9
Participantes 4