Ir para conteúdo
Fórum Script Brasil
  • 0

Fatorial em C - Help


waknin

Pergunta

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 para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...