Jump to content

Recommended Posts

Posted
#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 ?

Posted
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
Posted

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!

Posted

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!

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
×
×
  • Create New...

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.