Duvida... fatorial ! «Resolvido!»

12 respostas
J

Alguém pode me ajudar ? :S

É que não estou conseguindo fazer esse programa.

Elabore um programa que
receba um número inteiro N,
calcule e mostre o fatorial de N.

Eu fiz assim =S

import javax.swing.JOptionPane;

public class Q5{

	public static void main (String args[]){

			String numero = JOptionPane.showInputDialog("Numero:");

			int fatorial = Integer.parseInt(numero);

		int b = 1;
		int i;

		for (i=1;i>fatorial-1;i++){
			

			b = b*fatorial;
			fatorial = fatorial-1;


		}

		JOptionPane.showMessageDialog(null,fatorial);

	}
}

12 Respostas

Roger75

Creio que seja o “b” o resultado do seu fatorial.

J

Mas mesmo assim ele continua dando erro. É tipo, como se ele pulasse o for.

public class Q5{

	public static void main (String args[]){

			String numero = args[0];

			int fatorial = Integer.parseInt(numero);

		int b = 1;
		int i;

		for (i=1;i>fatorial-1;i++){
			

			b = b*fatorial;
			fatorial = fatorial-1;


		}

		System.out.println(b);

	}
}
Roger75

Acho que seu for está com condição errada:

for (i=1;i[color=red]<[/color]fatorial-1;i++){

ViniGodoy

Observe a condição do for. Ela vai fazer com que o for rode enquanto ela for verdadeira.

No seu caso, ela já é de cara falsa.

romarcio

Essa do fatorial é classica nas aulas de algoritmos, acho que quando fiz faculdade fiz ele em pascal, delphi, java e php, cada nova linguagem que se aprendia, davam essa questão, e também a do palindromo(comparar se uma palavra é ela mesmo de trás pra frente, tipo arara).

Sua lógica está um pouco errada, e como o Vini disse, seu for está errado.

O fatorial de 5, seria 1x2x3x4x5, então vc poderia fazer um esquema para multiplicar o i do for até 5, e vai armazenando o resultado em b.

J

Ainda nao estou conseguindo entender :S

E

Só para facilitar um pouquinho.

Para você fazer alguma coisa 5 vezes, de 1 até 5, você tem de usar:

for (int i = 1; i <= 5; ++i) {
    ...
}

Note que você tem de usar “<=”, não “>”. Ajuda alguma coisa?

J

Tem algum exemplo de fatorial ae pra eu entender ? ._.

E

Voltando ao exemplo. o fatorial de 5 é 1 * 2 * 3 * 4 * 5.

Você calcularia isso, no braço, mais ou menos assim:

x = 1
x = x * 1
x = x * 2
x = x * 3
x = x * 4
x = x * 5

No fim, x recebeu o valor 1 * 2 * 3 * 4 * 5. Entendeu?

J

Olha, eu coloquei assim e deu certo ._.
Tá certo, tipo, pela lógica ?

import java.util.Scanner;

public class Nina{
	
	
		public static void main (String args[]){
			
			Scanner input = new Scanner(System.in);
			
			System.out.print("Informe um numero:");
			int numero = input.nextInt();
			
			int total = 1;
			
			for (int i=1;i<=numero+2;i++){
				
				total =total * numero;
				numero = numero - 1;
			}
			
			System.out.print("Valor: "+total);
			
		}
	
}

//Testei com o 5 e deu certo;

Fui testar com o numero 6 em diante... é como se ele parasse no 2 :S algo assim

J

Eu tentei fazer assim

import java.util.Scanner;

public class Nina {
	
	public static void main (String args[]){
		
		Scanner input = new Scanner(System.in);
		
		System.out.println("\tInforme um numero:\t");
		int num = input.nextInt();
		
		int fatorial = 1;
		
		for (int i=1; i<= num; i++){
			
			fatorial *= i;
		}
		
		System.out.print(fatorial);
	}
}

Ai tipo, o for vai ficar rodando até o numero, e multiplicando seus antecessores... 1..2..3..4..

Valeu pela a ajuda de todos ae :D
Obrigado,
Boa noite

romarcio

Isso mesmo, era bem isso.
:thumbup:

Criado 3 de dezembro de 2010
Ultima resposta 3 de dez. de 2010
Respostas 12
Participantes 5