Fatorial while "help".[Resolvido]

5 respostas
cel_2008

Boa tarde Pessoal!
Não consigo fazer um fatorial usando while, é erro de lógica aparece o mesmo nª digitado, não o fatorial, me ajudem, obrigado.

import javax.swing.JOptionPane;


public class FatorialWhile {


	public static void main(String[] args) {
		
		int intcontador=1,fat,valor;
	
		
		
		valor=Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero","entrada",JOptionPane.INFORMATION_MESSAGE));
		fat=valor;
		while(intcontador<valor){	
			fat=fat*intcontador;
			JOptionPane.showMessageDialog(null,"o fatorial de "+valor+ " é :" + fat,"Resultado",JOptionPane.INFORMATION_MESSAGE);
			
			break;
			
		}		
				
		
		
	}

}

5 Respostas

marcelo.bellissimo
Tenta isso:
int intcontador = 1, fat, valor;

		valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
		fat = 1;
		String result = "o fatorial de " + valor + " é :";
		while (intcontador <= valor) {
			fat = fat + (fat * (valor - 1) );
			valor--;
		}
		JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);
cel_2008
marcelo.bellissimo:
Tenta isso:
int intcontador = 1, fat, valor;

		valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
		fat = 1;
		String result = "o fatorial de " + valor + " é :";
		while (intcontador <= valor) {
			fat = fat + (fat * (valor - 1) );
			valor--;
		}
		JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);
Valeu xara! É isso mesmo que eu queria, seria pedir demais pra vc fazer o teste de mesa desse código, pra eu entender melhor, "Se possível é claro", pois tentei fazer e não entendi muito bem. Sem mais Obrigado

Marcelo.

marcelo.bellissimo
cel?2008:
marcelo.bellissimo:
Tenta isso:
int intcontador = 1, fat, valor;

		valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
		fat = 1;
		String result = "o fatorial de " + valor + " é :";
		while (intcontador <= valor) {
			fat = fat + (fat * (valor - 1) );
			valor--;
		}
		JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);
Valeu xara! É isso mesmo que eu queria, seria pedir demais pra vc fazer o teste de mesa desse código, pra eu entender melhor, "Se possível é claro", pois tentei fazer e não entendi muito bem. Sem mais Obrigado

Marcelo.

Bem, não tem muito segredo, é só seguir a teoria do Fatorial... o Fatorial de N é o produto de todos os números inteiros, positivos, menores ou igual á N... isso implica que o Fatorial de 0 = 1 ... aliás, fatorial se representa por !...

Passos: - Pegar um valor do usuário(deve-se verificar se esse valor é positivo, pois não existe fatorial de número negativo), exemplo 3;
valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", OptionPane.INFORMATION_MESSAGE));
- O fatorial de 3, por definição, é o fatorial de 2 (3-1) multiplicado por 3: n! = n * (n-1)! ; - Repetir isso até atingir 1;
while  (intcontador <= valor) {  
// valor = 3
     fat = fat + (fat * (valor - 1) ); // fat => 1 + (1 x (3-1) ) => 1 + (1 x (2) ) => 1 + 2 => 3
     valor--;
// valor = 2
     fat = fat + (fat * (valor - 1) ); // fat => 3 + (3 x (2-1) ) => 3 + (3 x (1) ) => 3 + 3 => 6
     valor--;
// valor = 1
     fat = fat + (fat * (valor - 1) ); // fat => 6 + (6 x (1-1) ) => 6 + (6 x (0) ) => 6 + 0 => 6
     valor--;
// fim do while
 }

Não sei se ficou bom meu teste de mesa, seria mais facil fazer num papel! :D

cel_2008
marcelo.bellissimo:
cel?2008:
marcelo.bellissimo:
Tenta isso:
int intcontador = 1, fat, valor;

		valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
		fat = 1;
		String result = "o fatorial de " + valor + " é :";
		while (intcontador <= valor) {
			fat = fat + (fat * (valor - 1) );
			valor--;
		}
		JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);
Valeu xara! É isso mesmo que eu queria, seria pedir demais pra vc fazer o teste de mesa desse código, pra eu entender melhor, "Se possível é claro", pois tentei fazer e não entendi muito bem. Sem mais Obrigado

Marcelo.

Bem, não tem muito segredo, é só seguir a teoria do Fatorial... o Fatorial de N é o produto de todos os números inteiros, positivos, menores ou igual á N... isso implica que o Fatorial de 0 = 1 ... aliás, fatorial se representa por !...

Passos: - Pegar um valor do usuário(deve-se verificar se esse valor é positivo, pois não existe fatorial de número negativo), exemplo 3;
valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", OptionPane.INFORMATION_MESSAGE));
- O fatorial de 3, por definição, é o fatorial de 2 (3-1) multiplicado por 3: n! = n * (n-1)! ; - Repetir isso até atingir 1;
while  (intcontador <= valor) {  
// valor = 3
     fat = fat + (fat * (valor - 1) ); // fat => 1 + (1 x (3-1) ) => 1 + (1 x (2) ) => 1 + 2 => 3
     valor--;
// valor = 2
     fat = fat + (fat * (valor - 1) ); // fat => 3 + (3 x (2-1) ) => 3 + (3 x (1) ) => 3 + 3 => 6
     valor--;
// valor = 1
     fat = fat + (fat * (valor - 1) ); // fat => 6 + (6 x (1-1) ) => 6 + (6 x (0) ) => 6 + 0 => 6
     valor--;
// fim do while
 }

Não sei se ficou bom meu teste de mesa, seria mais facil fazer num papel! :D


Valeu xará, mais uma vez!

Agora deu pra visualizar melhor, Obrigado!!!

Marcelo.

B

Boa tarde cel?2008,

Segue abaixa 2 exemplos simples de fatorial:

public class Principal {
	public static void main(String[] args) {
		System.out.println(calculaFatorial(5));
	}

	private static int calculaFatorial(int valor){
		int result = valor;
		while (valor > 1) {
			result *= (valor-1);
			valor--;
		}
		
//		Segunda Maneira
//		int result = 0;
//		for (int i = valor ; i > 0 ; i-- ) {
//			if (i == valor) result = valor;
//			else result *= i;
//		}
		return result;
	}
}

Att,

Guilherme Bernert

Criado 7 de junho de 2010
Ultima resposta 10 de jun. de 2010
Respostas 5
Participantes 3