Par ou Impar

Ola pessoal alguem pode me ajudar a desenrolar esse probleminha.

Escreva um programa que imprima na tela a soma dos números ímpares
entre 1 e 30 e a multiplicação dos números pares entre 1 e 30.
:slight_smile:

a nnota vai pra mim?
rs

brincadeira…

mas
qual sua real dúvida?
vc programa?
onde c está com dificuldade?
vc j´escreveu alguma linha do codigo??/

abçs

divide por 2
se o resultado for 0 vc multiplica o contador
se for 1 vc soma

Meu caro…

QQ vc quer ? o programa pronto ou a logica pra fazer?

A logica ou um bug no seu programa a gente pode até ajudar…

Falando serio agora…

Dentro de um for separe os pares dos impares em dois vetores e aproveite o mesmo loop e if pra usar variaveis para as somas e mutiplicações…

Ajudou? :smiley:

bom pense comigo

você pode criar uma repetição do 1 ao 30.
{
dentro da repetição voce testa…
se o resto da (divisão do contador por 2) for 0 então o numero é par
somaPar += contador…
senão
somaImpar += contador…
}

cara. não entendi a duvida.
se quiser saber se o numero é par ou ímpar verifique o módulo da divisão por 2. se for 0 é par, se for diferente de 0 é impar

para saber se é par ou impar

[code]if(num % 2 == 0){

}else{

}[/code]

laço de repetição 30 vezes

[code]
for(i=0;i<30;i++){

}[/code]

now put the pieces together !

[code]

/**

  • @autor André AS

  • */
    public class Main {

    /**

    • Executa a lógica de negócio

    • */
      public static void main(String[] args) {

      int valorInicialDoRange = 1;
      int tamanhoDoRange = 10;
      int numeroFlag = 0;

      int somatoriaDosNumerosImparesResult = 0;
      int multiplicacaoDosNumerosPares = 0;

      while (valorInicialDoRange <= tamanhoDoRange) {
      boolean isPar = valorInicialDoRange % 2 == 0 ? true : false;
      if (isPar) {
      numeroFlag = numeroFlag + 1;
      if (numeroFlag != 1) {
      multiplicacaoDosNumerosPares = multiplicacaoDosNumerosPares * valorInicialDoRange;
      }else {
      multiplicacaoDosNumerosPares = valorInicialDoRange;
      }
      }else{
      somatoriaDosNumerosImparesResult = somatoriaDosNumerosImparesResult + valorInicialDoRange;
      }
      valorInicialDoRange = valorInicialDoRange + 1;
      }

      System.out.println("Resultado soma dos números ímpares: " + somatoriaDosNumerosImparesResult
      + “\n” + "Resultado multiplicação dos números pares: " + multiplicacaoDosNumerosPares + “\n”);

    }
    }[/code]

A base de tudo é parar, pensar e raciocionar o como fazer e o porquê de se fazer daquela maneira, veja abaixo fiz usando outra lógica:

[code]/**
* Executa a lógica de negócio
* */
public static void main(String[] args) {

	List<Integer> numerosImparesList = new ArrayList<Integer>();
	List<Integer> numerosParesList = new ArrayList<Integer>();

	int tamanhoInicial = 1;
	int tamanhoRange = 10;
	
	int somatoriaDosImparesResult = 0;
	int multiplicacaoDosParesResult = 0;
	
	for (int i = tamanhoInicial; i <= tamanhoRange; i++) {
		boolean isImpar = i % 2 == 0 ? true : false; 

		switch (valueOf(isImpar)) {
			case 0: numerosImparesList.add(i); break;
			case 1: numerosParesList.add(i);
		}
	}
	
	for (Integer somatoriaDosImpares : numerosImparesList) {
		somatoriaDosImparesResult = somatoriaDosImparesResult + somatoriaDosImpares;
	}
	
	for (Integer multiplicacaoDosPares: numerosParesList) {
		if (multiplicacaoDosParesResult != 0) {
			multiplicacaoDosParesResult = multiplicacaoDosParesResult * multiplicacaoDosPares;
		} else{
			multiplicacaoDosParesResult = multiplicacaoDosPares;
		}	
	}
	
	System.out.println("Resultado multiplicação dos números pares: " + multiplicacaoDosParesResult); 
	System.out.println("Resultado somatória dos números ímpares: " + somatoriaDosImparesResult); 
	          
}

public static int valueOf(boolean b){
	return b ? 1 : 0;
}[/code]

Agora lhe pergunto, qual forma é mais performática, e por quê?

[code]public static void main(String[] args) throws Exception {
final int NUM_MAX = 30;
long valorPar = 0;
long valorImpar = 1;

	for (int count = 0; count <= NUM_MAX; count++) {
		if (count % 2 == 0) 
			valorPar *= count;
		else 
			valorImpar += count;
	}
	System.out.println("ValorPar: " + valorPar + " - ValorImpar: " + valorImpar);
}[/code]

OBS: É importante você estudar a estrutura/comandos básica do java, pois o problema foi muito básico e mesmo assim você não conseguiu/ não tentou.
O objetivo do forum não é fazer nada para ninguem e sim trocar informação, podendo assim trocarmos experiencia.

Att.

pow. pq eu virei javababy?
T_T
eu ja era debugger.

[quote=Astork][code]public static void main(String[] args) throws Exception {
final int NUM_MAX = 30;
long valorPar = 0;
long valorImpar = 1;

	for (int count = 0; count <= NUM_MAX; count++) {
		if (count % 2 == 0) 
			valorPar *= count;
		else 
			valorImpar += count;
	}
	System.out.println("ValorPar: " + valorPar + " - ValorImpar: " + valorImpar);
}[/code]

OBS: É importante você estudar a estrutura/comandos básica do java, pois o problema foi muito básico e mesmo assim você não conseguiu/ não tentou.
O objetivo do forum não é fazer nada para ninguem e sim trocar informação, podendo assim trocarmos experiencia.

Att.[/quote]

Achei a lógica muito boa… Mas não está funcionando, pelo menos não no meu teste…
Valeu… :smiley: Abraços,

Poh, mastigatinho hein! Só faltou dar na boca…

Fala sério gente, por isso que tem um monte de programador ruim ai q trabalha por qualquer trocadado e faz a média salarial despencar!

Sacanagem!

[quote=andredecotia][quote=Astork][code]public static void main(String[] args) throws Exception {
final int NUM_MAX = 30;
long valorPar = 0;
long valorImpar = 1;

	for (int count = 0; count <= NUM_MAX; count++) {
		if (count % 2 == 0) 
			valorPar *= count;
		else 
			valorImpar += count;
	}
	System.out.println("ValorPar: " + valorPar + " - ValorImpar: " + valorImpar);
}[/code]

OBS: É importante você estudar a estrutura/comandos básica do java, pois o problema foi muito básico e mesmo assim você não conseguiu/ não tentou.
O objetivo do forum não é fazer nada para ninguem e sim trocar informação, podendo assim trocarmos experiencia.

Att.[/quote]

Achei a lógica muito boa… Mas não está funcionando, pelo menos não no meu teste…
Valeu… :smiley: Abraços,[/quote]

Nao funciona pois o resultado da multiplicacao sempre dara zero…pois todo numero multiplicado por zero da zero…

para isso so coloca uma verificacao antes da multiplicacao

if (count % 2 == 0) {
    if (count == 0) {
           count = 1;
	   valorPar = 1;
    }
    valorPar *= count;

So nao sei se o resultado da multiplicacao esta correto…rsrs… deu um numero absurdo! :lol:

fallowss

[quote=vitoryudi]a nnota vai pra mim?
rs

brincadeira…

mas
qual sua real dúvida?
vc programa?
onde c está com dificuldade?
vc j´escreveu alguma linha do codigo??/

abçs[/quote]
kkk nao tem nota nao, apenas peguei uma apostila pra estudar comecei a pouco tempo.
Eu sei fzr pouca coisa.

[quote=Elizeu_Santos]cara. não entendi a duvida.
se quiser saber se o numero é par ou ímpar verifique o módulo da divisão por 2. se for 0 é par, se for diferente de 0 é impar[/quote]
Não era essa minha duvida, mas mesmo assim obrigado.

Valeu pessoal pela ajuda e me desculpem por etr jogado so a questao e nao ter falo a minha duvida

Pessoal de fato o meu primeiro codigo estava so invertido, pois a primeira vez que fiz, imaginei que era para multiplicar o impar, e apenas editei o codigo aqui e nao mudei a inicialização da variavel… apenas para constar segue corrigido.

[code]public class Principal {

public static void main(String[] args) throws Exception {
	final int NUM_MAX = 30;
	long valorPar = 1;
	long valorImpar = 0;

	for (int count = 1; count <= NUM_MAX; count++) {
		if (count % 2 == 0)
			valorPar *= count;
		else
			valorImpar += count;
	}
	System.out.println("ValorPar: " + valorPar + " - ValorImpar: " + valorImpar);
}

}[/code]

[quote]x@ndy
Poh, mastigatinho hein! Só faltou dar na boca…
Fala sério gente, por isso que tem um monte de programador ruim ai q trabalha por qualquer trocadado e faz a média salarial despencar!
Sacanagem! [/quote]
Concordo que foi mastigado, na verdade não costumo ajudar muito os que pedem sem ao menos tentar, mas como ja tinham postado uma maneira, coloquei outra !!!
No final das contas quem acaba sempre perdendo é quem postou o código e não tentou fazer, visto que seria uma oportunidade muito bom de ter aprendido.

Att

[quote=x@ndy]Poh, mastigatinho hein! Só faltou dar na boca…

Fala sério gente, por isso que tem um monte de programador ruim ai q trabalha por qualquer trocadado e faz a média salarial despencar!

Sacanagem![/quote]

hehehe… Na minha opinião, não é o caso, não se aplica ao caso, mas achei very engraçada sua colocação hehehe…

Abraços e concordo com o que você disse hehehe…

[quote=Astork]Pessoal de fato o meu primeiro codigo estava so invertido, pois a primeira vez que fiz, imaginei que era para multiplicar o impar, e apenas editei o codigo aqui e nao mudei a inicialização da variavel… apenas para constar segue corrigido.

[code]public class Principal {

public static void main(String[] args) throws Exception {
	final int NUM_MAX = 30;
	long valorPar = 1;
	long valorImpar = 0;

	for (int count = 1; count <= NUM_MAX; count++) {
		if (count % 2 == 0)
			valorPar *= count;
		else
			valorImpar += count;
	}
	System.out.println("ValorPar: " + valorPar + " - ValorImpar: " + valorImpar);
}

}[/code]

[quote]x@ndy
Poh, mastigatinho hein! Só faltou dar na boca…
Fala sério gente, por isso que tem um monte de programador ruim ai q trabalha por qualquer trocadado e faz a média salarial despencar!
Sacanagem! [/quote]
Concordo que foi mastigado, na verdade não costumo ajudar muito os que pedem sem ao menos tentar, mas como ja tinham postado uma maneira, coloquei outra !!!
No final das contas quem acaba sempre perdendo é quem postou o código e não tentou fazer, visto que seria uma oportunidade muito bom de ter aprendido.

Att

[/quote]

Realmente gostei da sua lógica, e numa dessas você é que me ajudou também hehehe…