Usuário com melhor resposta
Fatoração c# - laço de repetição

Pergunta
-
Olá! Gostaria de tirar uma dúvida a respeito do meu código. Preciso calcular o fatorial de um número que será digitado pelo usuário e exibir na tela. Porém, não devem ser aceitos números negativos e, por definição, 0! = 1. Mas quando digito o valor 0 não é exibido o número 1. Me ajudem!!!
int f =1, n;
Console.WriteLine("digite o numero a ser fatorado: ");
n = int.Parse(Console.ReadLine());
while (n != 1) {
f = f * n;
n--;
if (n < 0) {
Console.WriteLine("digite um valor positivo.");
n = int.Parse(Console.ReadLine());
} else
if (n == 0) {
f = 1;
}
}
Console.WriteLine("o fatorial é {0}", f);
Console.ReadKey();
Respostas
-
Olá.. acredito que neste caso basta fazer a verificação primeiro.
int f = 1, n; Console.WriteLine("digite o numero a ser fatorado: "); n = int.Parse(Console.ReadLine()); while (n != 1) { if (n == 0) { f = 1; break; } f = f * n; n--; if (n < 0) { Console.WriteLine("digite um valor positivo."); n = int.Parse(Console.ReadLine()); } //else // if (n == 0) // { // f = 1; // } } Console.WriteLine("o fatorial é {0}", f); Console.ReadKey();
abs!
Cristiano
- Sugerido como Resposta Leandro de Agostini quinta-feira, 3 de maio de 2018 22:49
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 30 de maio de 2018 19:37
Todas as Respostas
-
Olá.. acredito que neste caso basta fazer a verificação primeiro.
int f = 1, n; Console.WriteLine("digite o numero a ser fatorado: "); n = int.Parse(Console.ReadLine()); while (n != 1) { if (n == 0) { f = 1; break; } f = f * n; n--; if (n < 0) { Console.WriteLine("digite um valor positivo."); n = int.Parse(Console.ReadLine()); } //else // if (n == 0) // { // f = 1; // } } Console.WriteLine("o fatorial é {0}", f); Console.ReadKey();
abs!
Cristiano
- Sugerido como Resposta Leandro de Agostini quinta-feira, 3 de maio de 2018 22:49
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 30 de maio de 2018 19:37
-
Boa tarde,
Por falta de retorno essa thread está encerrada.
Se necessário, fabor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.