Ruka284 Posted February 25, 2013 at 01:49 AM Report #496906 Posted February 25, 2013 at 01:49 AM #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 ?
HappyHippyHippo Posted February 25, 2013 at 02:05 AM Report #496907 Posted February 25, 2013 at 02:05 AM pensa bem no que estás a calcular dentro do ciclo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Ruka284 Posted February 25, 2013 at 02:12 AM Author Report #496908 Posted February 25, 2013 at 02:12 AM não estou à ver o erro ?
HappyHippyHippo Posted February 25, 2013 at 02:16 AM Report #496909 Posted February 25, 2013 at 02:16 AM 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 Portugol Plus
Ruka284 Posted February 25, 2013 at 02:23 AM Author Report #496911 Posted February 25, 2013 at 02:23 AM então tenho que atribuir um numero para pertençer ao num, e isso. tem que sair o total que esta no ciclo.
AJBM Posted February 25, 2013 at 09:26 AM Report #496914 Posted February 25, 2013 at 09:26 AM 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,
pmg Posted February 25, 2013 at 09:50 AM Report #496926 Posted February 25, 2013 at 09:50 AM 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!
thoga31 Posted February 25, 2013 at 08:36 PM Report #496986 Posted February 25, 2013 at 08:36 PM 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!
Ruka284 Posted February 27, 2013 at 02:49 AM Author Report #497183 Posted February 27, 2013 at 02:49 AM (edited) como fazes multiplicação consecutiva ? Edited February 27, 2013 at 02:53 AM by Ruka284
HappyHippyHippo Posted February 27, 2013 at 09:17 AM Report #497197 Posted February 27, 2013 at 09:17 AM 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 Portugol Plus
thoga31 Posted February 27, 2013 at 08:23 PM Report #497310 Posted February 27, 2013 at 08:23 PM 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!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now