none
Problema - Programação - Fatorial - Iniciante

    Question

  • Bom dia pessoal.

    Estou iniciando na plataforma C# e estou com um pequeno problema na hora de imprimir uma variável de fatorial no C# e vim por meio desta pedir a ajuda de vocês que já dominam a área.

    Segue enunciado do problema: 

    Elaborar um programa de computador que efetue e apresente o resultado do cálculo da fatorial do número digitado pelo usuário. 

    Segue meu código, trabalho com outras linguagens e fazia assim nas outras, estou achando C# fácil até, porém este problema eu sei que é apenas um pequeno detalhe...

    public static void Main(String[] args)
            {
                int numero;
    
                Console.WriteLine("Entre com o número que será fatorado:");
                numero = int.Parse(Console.ReadLine());
    
                
                for (int i = 1; i < numero; i++)
    			{
                    numero = numero * i;
                    i++;
    			}
                Console.WriteLine("Valor total do fatorial:" + numero);
                            
             }

    Segue também print do erro:

    Sendo que era para ser mostrado o resultado 120.

    Obrigado pela ajuda e disponibilidade de todos.

    Friday, September 21, 2012 2:37 PM

Answers

  • E ae tuco, blz cara?

    static void Main(string[] args)
    {            
      
      int numero;            
      Console.WriteLine("Entre com o número que será fatorado:");            
      numero = int.Parse(Console.ReadLine());           
      int fatorial;            
      fatorial = numero;            
    
      for (int i = numero - 1; i > 1; i--)               
      {                
        fatorial *= i;            
      }            
    
      Console.WriteLine("Valor total do fatorial:" + fatorial);            
      Console.Read();        
    }

    Cara, primeiro parabéns pela sua iniciativa, tem muita que vem aqui e quer o código pronto mas sem dúvida nenhuma o importante é aprender, e o melhor jeito é tentando fazer sozinho, e assim, você não conseguiu? não tem problema posta o código aqui a gente tenta ajudar você a encontrar o seu erro.

    Seguinte, acredito que exista outras formas de se fazer, mas eu fiz um pouco diferente do seu FOR. Veja que eu iniciei a variável do FOR com 4 e fui diminuindo ela até 1, no caso eu estou usando o seu exemplo aonde o usuário digitou 5.

    Uma dica, sempre coloque no papel antes de sair programando, programador tem essa mania de sair primeiro codificando sem planejar, então colocando no papel primeiro é possível enxergar melhor o fluxo do processo.


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS


    Friday, September 21, 2012 4:34 PM

All replies

  • Ve se te ajuda, campeão!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication13
    {
    class Program
    {
    static void Main(string[] args)
    {
    bool pararExecucao = false;
    
    do
    {
    try
    {
    long N = 0;
    long fatorial = 0;
    long numero = 0;
    
    try
    {
    //Solicita que o usuário digite um número.
    
    Console.WriteLine("Digite um número natural não negativo:");
    numero = Int64.Parse(Console.ReadLine());
    
    if (numero < 0)
    {
    throw new Exception("Digite um número não negativo!");
    }
    
    //Caso seja digitado um caracter não númerico, retornará a mensagem.
    }
    catch (Exception)
    {
    Console.WriteLine("Digite um caracter válido|");
    Console.ReadLine();
    break;
    }
    
    //Caso digite um caracter número, retorna mensagem na tela.
    
    Console.WriteLine("Fatorial de " + numero.ToString() + "!");
    
    //Inicia valor de fatorial com Número.
    N = numero;
    fatorial = N;
    
    //Inicia decrementação de Número
    N--;
    
    //Faz o cálculo do Fatorial
    do
    {
    fatorial = fatorial * N;
    Console.WriteLine(N.ToString() + " -> " + fatorial.ToString("N"));
    N--;
    }
    while (N > 0);
    
    Console.WriteLine("Fatorial de " + numero.ToString() + "! = " + fatorial.ToString());
    Console.WriteLine();
    Console.WriteLine();
    Console.WriteLine();
    
    //Solicita ao usuário uma nova execução.
    
    Console.WriteLine("Executar novamente?(S|N)");
    pararExecucao = (Console.ReadLine().ToUpper() == "N");
    }
    catch (Exception ex)
    {
    Console.Write("Erro no fatorial!\n" + ex.Message);
    Console.ReadLine();
    }
    }
    
    //Para execução e fecha o programa.
    
    while (!pararExecucao);
    }
    }
    }

    FONTE: http://scriptbrasil.com.br/forum/index.php?showtopic=168230

    Friday, September 21, 2012 2:54 PM
  • Já tinha visto esse código Leonardo, porém queria fazer o padrão... mal sei fazer um (for) e fazer (try) e (catch) já em C# não é uma boa para mim ainda, quando começar a mexer com um banco de dados, txt, excel que precisa de tratamento de erro seria útil e o que o cara fez aí não é o que eu realmente quero, quero fazer o padrão de programação mesmo e apenas conseguir resolver... estou fazendo diversos problemas aqui, cada um usando um laço diferente... no fatorial vou usar o for, em outro irei usar o While, etc... e o jeito que o cara fez não é a melhor solução para o meu problema, não quero pegar um código na internet e tentar entender ele, quero pegar fazer um código e tentar fazer a programação em si, preciso de alguém que ache o meu erro apenas isso, sei que é coisa boba mais sou iniciante ainda...

    Mesmo assim obrigado pela ajuda.

    Friday, September 21, 2012 2:59 PM
  • E ae tuco, blz cara?

    static void Main(string[] args)
    {            
      
      int numero;            
      Console.WriteLine("Entre com o número que será fatorado:");            
      numero = int.Parse(Console.ReadLine());           
      int fatorial;            
      fatorial = numero;            
    
      for (int i = numero - 1; i > 1; i--)               
      {                
        fatorial *= i;            
      }            
    
      Console.WriteLine("Valor total do fatorial:" + fatorial);            
      Console.Read();        
    }

    Cara, primeiro parabéns pela sua iniciativa, tem muita que vem aqui e quer o código pronto mas sem dúvida nenhuma o importante é aprender, e o melhor jeito é tentando fazer sozinho, e assim, você não conseguiu? não tem problema posta o código aqui a gente tenta ajudar você a encontrar o seu erro.

    Seguinte, acredito que exista outras formas de se fazer, mas eu fiz um pouco diferente do seu FOR. Veja que eu iniciei a variável do FOR com 4 e fui diminuindo ela até 1, no caso eu estou usando o seu exemplo aonde o usuário digitou 5.

    Uma dica, sempre coloque no papel antes de sair programando, programador tem essa mania de sair primeiro codificando sem planejar, então colocando no papel primeiro é possível enxergar melhor o fluxo do processo.


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS


    Friday, September 21, 2012 4:34 PM
  • E ae tuco, blz cara?

    static void Main(string[] args)
    {            
      
      int numero;            
      Console.WriteLine("Entre com o número que será fatorado:");            
      numero = int.Parse(Console.ReadLine());           
      int fatorial;            
      fatorial = numero;            
    
      for (int i = numero - 1; i > 1; i--)               
      {                
        fatorial *= i;            
      }            
    
      Console.WriteLine("Valor total do fatorial:" + fatorial);            
      Console.Read();        
    }

    Cara, primeiro parabéns pela sua iniciativa, tem muita que vem aqui e quer o código pronto mas sem dúvida nenhuma o importante é aprender, e o melhor jeito é tentando fazer sozinho, e assim, você não conseguiu? não tem problema posta o código aqui a gente tenta ajudar você a encontrar o seu erro.

    Seguinte, acredito que exista outras formas de se fazer, mas eu fiz um pouco diferente do seu FOR. Veja que eu iniciei a variável do FOR com 4 e fui diminuindo ela até 1, no caso eu estou usando o seu exemplo aonde o usuário digitou 5.

    Uma dica, sempre coloque no papel antes de sair programando, programador tem essa mania de sair primeiro codificando sem planejar, então colocando no papel primeiro é possível enxergar melhor o fluxo do processo.


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS


    Fala Janderson beleza?

    Cara obrigado novamente pela ajuda.

    Você está me ajudando muito, são pessoas como você que são bem vistas nas empresas.

    Entendi totalmente sua lógica de raciocínio e ela foi muito útil também para o meu aprendizado.

     

    Muito Obrigado.

    Johnata

    Friday, September 21, 2012 4:51 PM
  • Inspirado na sua tentativa, eu fiz alguns ajustes e funcionou. Espero que ajude.

    int numero, fat; Console.WriteLine("Entre com o número que será fatorado:"); numero = int.Parse(Console.ReadLine()); fat = numero; for (int i = 1; i < fat; i++) { numero = numero * i; } Console.WriteLine(numero); Console.ReadKey();


    Wednesday, June 04, 2014 2:51 AM
  • E ae tuco, blz cara?

    static void Main(string[] args)
    {            
      
      int numero;            
      Console.WriteLine("Entre com o número que será fatorado:");            
      numero = int.Parse(Console.ReadLine());           
      int fatorial;            
      fatorial = numero;            
    
      for (int i = numero - 1; i > 1; i--)               
      {                
        fatorial *= i;            
      }            
    
      Console.WriteLine("Valor total do fatorial:" + fatorial);            
      Console.Read();        
    }

    Cara, primeiro parabéns pela sua iniciativa, tem muita que vem aqui e quer o código pronto mas sem dúvida nenhuma o importante é aprender, e o melhor jeito é tentando fazer sozinho, e assim, você não conseguiu? não tem problema posta o código aqui a gente tenta ajudar você a encontrar o seu erro.

    Seguinte, acredito que exista outras formas de se fazer, mas eu fiz um pouco diferente do seu FOR. Veja que eu iniciei a variável do FOR com 4 e fui diminuindo ela até 1, no caso eu estou usando o seu exemplo aonde o usuário digitou 5.

    Uma dica, sempre coloque no papel antes de sair programando, programador tem essa mania de sair primeiro codificando sem planejar, então colocando no papel primeiro é possível enxergar melhor o fluxo do processo.


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS


    Amigo boa noite

    Muito obrigado pela ajuda, foi muito importa;

    Mas queria que se possível me explicasse essa parte do código.

    fatorial *= i

    Em especial *= pois n encontrei nada falando sobre esse operador e queria saber a função dele no código.

    Monday, June 23, 2014 3:41 AM
  • Veja esse exemplo meu brother:

    i += 2; // Add two

    É uma forma simplificada de fazer:

    i = i + 2; // Add two

    Compreende?




    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    Monday, June 23, 2014 11:28 AM