Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ruka284

Factorial

Recommended Posts

Ruka284

#include <stdio.h>
#include <stdlib.h>
main()
{
 int num,factorial,total;
 printf("introduza o numero   \n");
 scanf("%d%",&num);
 total=1;
 while (num > 0){
   total=num*1;
   num=num-1;
 }
 printf(" o total e: %d \n",total);
 system ("PAUSE");
 return 0;        
}

aqui resultado esta sempre a dar 1!!!

quais os erros que detectam ?

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
HappyHippyHippo

while (num > 0){  // enquanto o valor de "num" for maior que zero
 total=num*1;    // total é o valor de "num" multiplicado por 1 (que é a mesma coisa que não multiplicar)
 num=num-1;      // decrementar "num"
}

que valor tem "num" no fim do ciclo ?

que valor tem "total" no fim do ciclo ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Ruka284

então tenho que atribuir um numero para pertençer ao num, e isso.

tem que sair o total que esta no ciclo.

Share this post


Link to post
Share on other sites
AJBM

Boas!

Dentro do ciclo vais ter que fazer algo assim. por exemplo o num=3

total=3*2

total=6*1

tens que guardar o valor da multiplicação anterior para a próxima iteração,

Share this post


Link to post
Share on other sites
pmg

o teu scanf tem um % a mais

scanf("%d%", &num);


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
thoga31

então tenho que atribuir um numero para pertençer ao num, e isso.

tem que sair o total que esta no ciclo.

Pensa bem antes de dar palpites. E ver se escreves bem aquilo que queres dizer, que não consegui entender bem o que querias dizer com isso de "atribuir um número para pertencer ao num".

O factorial de n é o quê? É o produto de todos os números naturais consecutivos de 1 a n.

Então, o que tu tens de fazer é simples: calcular este produto consecutivamente de 1 até n.

6! = 6*5*4*3*2*1
ou
6! = 1*2*3*4*5*6

Faz como te der mais jeito. Mas não te esqueças que, quando atribuis a uma variável um outro valor, este não é incrementado ao actual, mas sim substituído. Pelo que, ao fazeres total=num*1 (o *1 de nada serve) apenas estás a atribuir a total o valor actual de num, e quando o ciclo termina, é-te apresentado o último valor que num assumiu.

Onde estás a fazer a multiplicação consecutiva? Em lado nenhum.

Entretanto, estás a fazer o return do main mas este nem sequer tem um tipo definido... estamos cansados de te dizer que deves dar ao main um tipo de dados, especialmente int! Está a custar bastante aplicares os nossos bons conselhos...

int main(void)
{
  // programa
  return 0;
}


Knowledge is free!

Share this post


Link to post
Share on other sites
HappyHippyHippo

scanf("%d%",&num);
while (num > 0){
 num=num-1;
}

pega numa folha de papel e aponta o valor de "num" para cada iteração do ciclo

depois verifica o que podes fazer com isso


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
thoga31

como fazes multiplicação consecutiva ?

Para o presente caso, ou com um ciclo, como o @Happy mostrou, ou recursivamente.

Mas primeiro faz o que o @Happy te disse para veres se entendes o princípio por detrás disto.


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.