Factorial algorithm in Portugol Studio

Asked

Viewed 15,349 times

0

I have this algorithm:

programa 
{
    inteiro numero, fatorial, resultado=1

    funcao inicio() 
    {
        escreva ("Insira um número a ser fatorado: ")
        leia (numero)

        para (fatorial = 1; fatorial <= numero; fatorial++)
        {
            resultado = resultado * fatorial
        }

        escreva ("O fatorial de ", numero, " é: ", resultado)
    }
}

That correctly returns me the factorial. But as I do to him to return all the mathematics?

Ex.:

5! = 5x4x3x2x1=120

2 answers

1


The first thing you need to keep in mind is that the loop (para) needs to be reversed. This is because it will become easier to concatenate the multiplications into one string (type cadeia).

For example, the factorial of 3 has resulted 6 the representation would be 3! = 3x2x1 = 6. Note that it is much easier to concatenate the text if the multiplication starts with 3.

With this in mind, follow the algorithm

inteiro numero, fatorial, resultado = 1
cadeia texto = "" //Variavel para salvar a representação final (3x2x1)

escreva ("Insira um número a ser fatorado: ")
leia (numero)

/* Perceba que aqui o loop (para), corre de trás pra frente. Ou seja, ele começa no número
 * que foi digitado pelo usuário (fatorial = numero), acontece enquanto o multiplicador 
 * for maior ou igual a 1 (fatorial >= 1) e vai diminuindo 1 do multiplicador 
 * a cada passada (fatorial--) */

para (fatorial = numero; fatorial >= 1; fatorial--)
{
    // Aqui, se for 1 não precisamos concatenar o sinal de multiplicação (x)
    se(fatorial == 1){
        texto = texto + fatorial
    }senao{
        texto = texto + fatorial + "x"
    }

    resultado = resultado * fatorial
}

escreva (numero, "! = ", texto, " = ", resultado)
  • Boy that’s right! I need to improve my logic! I had already given up on this algorithm! Vlw jbueno!

  • @Sandsoncosta For nothing. Whenever you need can post here, sometimes it takes a while, but questions well asked will always be answered.

0

texto t = ""
para (fatorial = numero; fatorial >= 1; fatorial--) //Realiza o decremento
{
    if(fatorial != 1){ //Verifica se diferente de 1 para não adicionar o "x"
       t = t + fatorial + "x"
    } else {
       t = t+ fatorial
    }
    resultado = resultado * fatorial
}
escreva (fatorial, "! = ",t , " = ", resultado)

//I haven’t seen Portugol in years

  • What would this text t = " " ?

  • I made here the code... did not give the right result...

  • @Sandson Costa that t="" is the string that will define the specific character or word

Browser other questions tagged

You are not signed in. Login or sign up in order to post.