Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ruka284

Factorial

Mensagens Recomendadas

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 ?

Editado por Rui Carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.