Jump to content
Fórum Script Brasil
  • 0

Fatorial em C - Help


waknin

Question

oi.

Já pesquisei alguns codigos já prontos de fatorial em C. Mas não se adequam ao que eu quero (que é fazer em menor numero de linhas e se adequar a qualquer numero).

Vejam os que achei:

#include <stdio.h>

main()
{
    float fat;
    int num,opt;

    opt=1;
    while(opt==1) {

        printf("Digite um n£mero para obter o fatorial:\n");
        scanf("%d",&num);
        if(num==1 || num==0) {
            fat=1;
            printf("O fatorial ‚: %.0f\n\n",fat);
        }
        else if(num<=30 && num>1) {
            fat=num;
            while(num>1) {
                fat=fat*(num-1);
                num=num-1; }
            printf("O fatorial ‚: %.0f\n\n",fat);
        }
        else
            printf("Este programa s¢ aceita n£meros entre 0 e 30.\n\n");


        printf("Tecle 1 para continuar ou 0 para sair:");
        scanf("%d",&opt);
        printf("\n\n");
    }
}
2:
#include <stdio.h>

main()
{
    float fat;
    int num,opt;

    opt=1;
    while(opt==1) {

        printf("Digite um n£mero para obter o fatorial:\n");
        scanf("%d",&num);
        if(num==1 || num==0) {
            fat=1;
            printf("O fatorial ‚: %.0f\n\n",fat);
        }
        else if(num<=30 && num>1) {
            fat=num;
            while(num>1) {
                fat=fat*(num-1);
                num=num-1; }
            printf("O fatorial ‚: %.0f\n\n",fat);
        }
        else
            printf("Este programa s¢ aceita n£meros entre 0 e 30.\n\n");


        printf("Tecle 1 para continuar ou 0 para sair:");
        scanf("%d",&opt);
        printf("\n\n");
    }
}
O meu não retorna certo. Minha lógica esta errada. Vejam o meu:
#include <stdio.h>
#include <stdlib.h>

int main() {
float a, b,c, i;
printf("Insira um numero para calcular seu fatorial:\n");
scanf("%f", &a);
c=0;

for ( i=1; i<=a; i++){
b=a*i;
c=c+b;
}


printf("\n %f",c);
printf("\n");
system("PAUSE");
}

Eu sei que está errado mas não sei fazer. A minha ideia era fazer com que o numero multiplica-se cconsecutivamente até chegar a 1.

Ex: 4!= 4.3.2.1 = 24

Eu estava tentando usar o for para isso mas em vez de multiplicar um a um o b=a*i esta somandao. Assim olha :

4*1=4

4*2=8

......=12

......=16 ---> 4 + 8 + 12 + 16 = 40

alguém me ajuda?

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Consegui fazer gente. Ta aqui olha pra quem quiser.

main() {
int a, i;
long b=1;

printf("Insira um numero para ver seu fatorial: \n");
scanf("%d",&a);

for(i=1;i<=a;i++)
b=b*i;
printf("O fatorial de %d é %7.0f.",a,b);


printf("\n");
system ("PAUSE");


}

Mas só vai até 34 porque senão estoura o campo. Eu vou tentar fazer um sistema pra transformar o numero em notação cientifica (150000 = 1,5 * 10^5). Isso vai me permitir o calculo de numeros maiores.

Valeu!

Waknin

Link to comment
Share on other sites

  • 0

Eu fiz usando o while :P

long valor;
              long Fat;
                                  printf("Digite o valor a ser fatorado \n");
                  scanf("%li",&valor);
                  Fat=valor-1;
                  while (Fat != 1) {
                      valor=valor*Fat;
                    Fat=Fat-1;
                            continue;
                      }
                     printf ("\nO resultado e: %d \n",valor);

Link to comment
Share on other sites

  • 0
Eu fiz usando o while :P

long valor;
              long Fat;
                                  printf("Digite o valor a ser fatorado \n");
                  scanf("%li",&valor);
                  Fat=valor-1;
                  while (Fat != 1) {
                      valor=valor*Fat;
                    Fat=Fat-1;
                            continue;
                      }
                     printf ("\nO resultado e: %d \n",valor);

Boa! O "problema" do seu é que só vai até 31 ou 32 se não me engano. Ve como melhora-lo.

Link to comment
Share on other sites

  • 0

Oi pessoal olhei tópico d vc's e consegui um jeito de fazer o fatorial usando recursividade.

segue abaixo o codigo.

Obs: serve para qualquer valor mas dependendo do valor tera que mudar a variavel n de int para

double.

#include <stdio.h>

#include <stdlib.h>

int fat(int n){

if(n){

return n*fat(n-1);

}

else {

return 1;

}

}

int main(){

int n;

printf("\n\nDigite um valor para n: ");

scanf("%d",&n);

printf("O fatorial de %d e: %d\n",n,fat(n));

system("PAUSE");

return(0);

}

Espero que tenha ajudado!!!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...