Calculando fatorial

Publicado por David Lorente 07/09/2004 (última atualização em 18/12/2012)

[ Hits: 38.447 ]

Homepage: .

Download fatorial.cpp

Download fatorial-recursivo.c (versão 2)




Eu estava em casa num feriadão e como não nada melhor para fazer resolvi fazer esse "programinha" em C++. Ele efetua o cálculo de no máximo 170! (170 fatorial). Para quem está começando esse é um pequeno exemplo sobre como trabalhar com funções em C++.

  



Versões atualizadas deste script

Versão 2 - Enviado por Uilian Ries em 08/12/2012

Changelog: Adicionado função para fatorial recursiva

Download fatorial-recursivo.c


Esconder código-fonte

//********************************************
//           Fatorial
//   Desenvolvido por David Lorente 07/09/04   
//********************************************

#include <stdio.h>
#include <stdlib.h>


double fatorial(double numero);
void imprime();
int  main()
{
   imprime();
   return 0;
}

void imprime()

{
   double numero;
   system("clear");
   printf("+++Fatorial+++");
   printf("\n\nDigite um numero inteiro para o calulo do fatorial: ");
   scanf("%lf", &numero);
   
   printf("O resultado e: %.0lf\n\n", fatorial(numero));
   getchar();
}

double fatorial(double numero) //O calculo do fatorial e feito aqui

{
   double aux;
   aux = numero;
   while(numero > 1)
   {
      aux = aux * (numero-1);
      numero--;
   }
   return (aux);
}

Scripts recomendados

Strlen (parte 1)

Hello world em COBOL

Aprendendo a usar classes em C++

aritmed1.c - Aritmetica de Ponteiros

Texto colorido em C para Linux


  

Comentários
[1] Comentário enviado por jllucca em 07/09/2004 - 10:56h

Tipo, depois de uma rápida olhada no código fonte não percebi nada que precise de C++. Alem do que todas as funções que tu utiliza são "ANSI C", assim o programa está escrito em C e não em C++.

[2] Comentário enviado por Gordon_Freeman em 11/09/2004 - 00:14h

Caro jllucca,
Bem, em primeiro lugar quero desculpar me pela gafe que cometi :(. O pouco que aprendi de c++ (ou c?! agora não tenho mais certeza sobre qual delas estou falando.) foi atravez de um livro velho que tenho aqui em casa. Esse livro traz essas funções como sendo funções de c++, se o que você diz é verdade então esse livro é uma @#$%. Mas de qualquer modo se este programa está escrito em C, eu teria conseguido compilá-lo com o gcc, estou certo?. Mas este não o fez, tenho que usar para isso o g++. Agora estou mesmo confuso. Gostaria que, se possível esclarecesse isso para mim :).

[]'s Freeman

[3] Comentário enviado por removido em 18/02/2008 - 04:14h

Outra sugestão de cálculo, usando o "for" no lugar do "while":

for (aux = numero; numero > 1; numero--)
aux = aux * (numero - 1);

[]´s

[4] Comentário enviado por oberlan em 24/05/2010 - 20:11h

O algoritmo tem um pequeno erro! Se digitarmos 0 ele retorna 0, e na verdade 0! = 1 ;)
Mesmo assim, ótimo algoritmo :D

[5] Comentário enviado por uilianries em 08/12/2012 - 10:09h

Realizei uma modificação no código, adicionando a chamada recursiva ;)

[6] Comentário enviado por EnzoFerber em 20/12/2012 - 17:04h

double fat( double n ) { return (n == 1) ? 1 : n * fat(n-1); }


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts