[RESOLVIDO]Numeros pares, impares e diferentes

Eu quero implementar um programa que lê quatro valores inteiros e indique quantos são diferentes (1,2,3 ou 4), são pares e são ímpares. Do tipo : Valores ? 32 -3 32 234 Diferentes=3, Pares=3, Impares=1.

Sei que para calcular numeros pares e apenas fazer (num%2 = 0) mas estou com problemas em fazer esta condiçao para 4 valores e juntar no fim, e nao sei como definir uma condição para calcular os numeros diferentes.

Ate agora tenho isto, esta a calcular mal os numeros pares e impares e ainda nao esta a calcular os numeros diferentes

import java.util.*;

// NADA FEITO NÃO ESTOU A CONSEGUIR

public class Conta4 {
public static void main(String [] args) {
Scanner in = new Scanner ( System.in );
int v1, v2, v3, v4;
System.out.print("Valores ? "); v1 = in.nextInt(); v2 = in.nextInt(); v3 = in.nextInt(); v4 = in.nextInt();

if (((v1 % 2) == 0 ) && ((v2 % 2) == 0) && ((v3 % 2) == 0) && ((v4 % 2) == 0)){
	System.out.print ("Pares = 4");
}else{ System.out.print ("Impares = 4");
}

 if (((v1 % 2) == 0 ) && ((v2 % 2) == 0) && ((v3 % 2) == 0)){
	System.out.print("Pares = 3");
}else{
	System.out.print("Impares = 3");
}
if (((v1 % 2) == 0 ) && ((v2 % 2) == 0)) {
	System.out.print("Pares = 2");
}else{
	System.out.print("Impares = 2");
}
if (((v1 % 2) == 0 )){
	System.out.print("Pares = 1");
}else{
	System.out.print("Impares = 1");
}	

}
}

Olá zalo,

Deixa eu ver se entendi: se você passou os números 32 -3 32 234, então ao meu ver são 3 pares, 1 ímpar e dois diferentes, correto? O 32 repete, então não seria contado. Ou seria uma vez só?

Esse jeito if (((v1 % 2) == 0 ) && ((v2 % 2) == 0) && ((v3 % 2) == 0) && ((v4 % 2) == 0)){ além de ser muito mais trabalhoso, vai te deixar maluco. Pode dar um pouquinho só de trabalho, mas eu jogaria esses números em um arrayList e faria as contas. Faria um loop, que contaria os pares, ímpares e diferentes.

Tipo

Array(índice) % 2 == 0{
par
}else{
ímpar
}

e crie variáveis para contá-los.

Um abraço e boa sorte

eu nao posso utilizar arrays, so posso utilizar if’s :? daí a condusao, e o 32 conta como um so daí ser 3 numeros diferentes, como e que posso juntar isto tudo no codigo que ja tenho feito?

algo deste genero:

if (((v1 & v2 & v3 & v4) % 2) == 0 ){
System.out.print (“Pares =4 Impares = 0”);
}else{ System.out.print (“Impares = 4 Pares = 0”);
}

imagina quantas possibilidades você terá comparando os 4 números de uma única vez. Pra mim, ficaria mais fácil algo assim então

if número1 % 2 == 0
contadorPares++
senão
contadorImpares++

Até o quarto número. Quanto às comparações de diferentes, acho que vai ter que ser na unha mesmo.

Boa sorte.

Cara vc pode usar um array e colocar os 4 valores lá…
Faz um for de 4 ciclos (obviamente ;; ), nesse ciclo faz 1 if se é para ver se é par, e coloca apenas um else.
Como o if está no laço ele irá verifica se os 4 valores são par, se não for é ímpar. E faz 2 variáveis extra (qtdPar e qtdImpar), coloca a variavel qtdPar dentro do if somando 1 e qtdImpar colocar no else somando 1(Ai no final vc tem a quantidade).
Isso resolve o problema do código acima, quando eu pensar na lógica para a outra parte do problema eu falo…
Entendeu??
Qualquer duvida só falar…

ja tenho a calcular numeros pares e impares, falta so calcular os numeros diferentes

import java.util.*;

// NADA FEITO NÃO ESTOU A CONSEGUIR

public class Conta4 {
public static void main(String [] args) {
Scanner in = new Scanner ( System.in );
int v1, v2, v3, v4, pares= 0, impares = 0;
System.out.print("Valores ? "); v1 = in.nextInt(); v2 = in.nextInt(); v3 = in.nextInt(); v4 = in.nextInt();

if (( v1 % 2 ) == 0){
	pares++;
}else{
	impares++;
}	
 if (( v2 % 2 ) == 0){
	pares++;
}else{
	impares++;
}	
 if (( v3 % 2 ) == 0){
	pares++;
}else{
	impares++;
}	
 if (( v4 % 2 ) == 0){
	pares++;
}else{
	impares++;
}	

System.out.print ("Pares="+pares + "Impares="+impares);

}
}

cara so posso utilizar if’s e else’s :cry:

Vc era pra ter dito isso…

Mais em fim, é só fazer usando a mesma logica, que vc uso para fazer a compração…(ou seja vai ter que comparar 1 por 1).
Ps: se prof. deve ter feito isso para vc aprender usar o IF, então nunca faça isso em um programa de verdade… BLZ

Eu faria assim:(Só a parte de comparação)

[code]public class ArrayB {
public static void main(String[] args) {
int[] numero = new int[4];
int qtdPar = 0;
int qtdImpar =0;
Scanner in = new Scanner(System.in);

	for(int i=0;i<4;i++){
		System.out.print("Valor ? ");
		numero[i]=in.nextInt();
		if((numero[i]%2)==0){// 
			qtdPar = qtdPar + 1;
						
		}else{
			qtdImpar = qtdImpar + 1;
		}
					
	}
			
	System.out.println(qtdPar+" são pares.");
	System.out.println(qtdImpar+" são impares.");
}

}[/code]

Eu não entendi muito bem, acho que posso te ajudar. Esses valores diferentes você quer dizer o que? A e o usuário tem que digitar cada valor por vez ou pode digitar os 4 valores de uma vez só? O número pode repetir e são somente inteiros?

Olá, zalo, bom dia!

Faça assim, essa é a minha sugestão:

[code]int diferentes = 1;

if(v1 != v2)
diferentes++;
if(v3 != v1 && v3 != v2)
diferentes++;
if(v4 != v1 && v4 != v2 && v4 != v3)
diferentes++;[/code]Inicializei a variável diferentes com o valor 1, me baseando no exemplo que você deu, o que quer dizer que mesmo que todos números sejam iguais, vai dizer que há 1 número diferente.

Abraço!

Fiz um exemplo usando for (que valeria para um vetor de qualquer tamanho) e um só com if, que vale só para vetores de tamanho 4…
Dei uma comentada, se não entender algo pergunte…

public class Numeros {

	static int[] vetor = {32,-3,32,234};

	public static void main(String args[]) {
		solucao1();
		solucao2();
	}

	public static void solucao1(){
		int pares = 0, impares = 0, diferentes = 0;
		//percorre o vetor inteiro
		for(int i=0 ; i<vetor.length ; i++){
			//testa se é par ou ímpar
			if(vetor[i]%2 == 0){
				pares++;
			}else{
				impares++;
			}
			//testa se é igual a algum outro valor do vetor
			boolean ehDiferente = true;
			for(int j=i-1 ; j>=0 ;j--){//percorre o vetor para trás da posição i-1 até 0
				if(vetor[j]==vetor[i]){
					ehDiferente = false;
				}
			}
			if(ehDiferente){
				diferentes++;
			}
		}
		//Imprime o resultado
		System.out.println("*** Método com FOR ***");
		System.out.println("Pares: " + pares);
		System.out.println("Ímpares: " + impares);
		System.out.println("Diferentes: " + diferentes);
	}

	public static void solucao2(){
		int pares = 0, impares = 0, diferentes = 0;
		//Testa o primeiro valor
		if(vetor[0]%2 == 0){
			pares++;
		}else{
			impares++;
		}
		diferentes++; //O primeiro é obrigado a ser diferente

		//Testa o segundo valor
		if(vetor[1]%2 == 0){
			pares++;
		}else{
			impares++;
		}
		if(vetor[0] != vetor[1]){
			diferentes++;
		}

		//Testa o terceiro valor
		if(vetor[2]%2 == 0){
			pares++;
		}else{
			impares++;
		}
		if(vetor[2] != vetor[1] && vetor[2] != vetor[0]){
			diferentes++;
		}

		//Testa o quarto valor
		if(vetor[3]%2 == 0){
			pares++;
		}else{
			impares++;
		}
		if(vetor[3] != vetor[2] && vetor[3] != vetor[1] && vetor[3] != vetor[0]){
			diferentes++;
		}

		//Imprime o resultado
		System.out.println("\n*** Método com vários IF's ***");
		System.out.println("Pares: " + pares);
		System.out.println("Ímpares: " + impares);
		System.out.println("Diferentes: " + diferentes);
	}
}

Problema resolvido! Obrigado a todos os que ajudaram! valeu

Perfeito, zalo!

Por favor, edite o título do tópico adicionando [RESOLVIDO] ao início do título.

Obrigado!