Desafio de Programação - Fatorial

Started by Anonymous, 22 de August , 2006, 01:35:53 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

Salve a todos. Primeiro post aqui e quero propôr um desafio de programação a vocês, motivado pelo tópico do dvd.Desafios são legais e muitas vezes você desenvolve algorítmos que usará em programas posteriormente.

Você terá que escrever um programa que retorne o fatorial dos números de 25 a 30.
Devem ser mostrados todos os números dos fatoriais, e não notação científica.
Não pode ser usadas bibliotecas para cálculos matemáticos feitas por terceiros, como a GMP ou NTL. Sò as criadas por você.


Abraço.

Anonymous

Aew \o/
Bom se eu intendi bem vc queria uma funcao de fatora que retorna os valores sem notacao cientifica...

Fiz correndo aqui mas funfa blz

double Fatora(double n) {
double r=n;
for(;n>1;n--)
r*=n-1;
return r;
}

int main() {
printf("%.f\n",Fatora(30));
system("pause");
}

Certei?

Anonymous

Não enteni muito bem o desafio, poderia explicar melhor??

Anonymous


Anonymous

Quote from: "dvd"Aew \o/
Bom se eu intendi bem vc queria uma funcao de fatora que retorna os valores sem notacao cientifica...

Fiz correndo aqui mas funfa blz

double Fatora(double n) {
double r=n;
for(;n>1;n--)
r*=n-1;
return r;
}

int main() {
printf("%.f\n",Fatora(30));
system("pause");
}

Certei?
É quase isso mesmo, uma rotina pra calcular fatorial dos números entre 25 e 30.
Mas você pode perceber que a partir de certo número, seu fatorial é muito grande pra caber num double, e é preciso mostrar todos os números.
Pense em BigInts.

Abraço.

Anonymous

Bom o esquema é aquele ali mesmo
Maior q isso so long double que aceita 12 bytes

nibbles

int fat(int a)
{
if (a)
return (a * fat(a-1));
else
return(1);
}



"A diversão do inteligente é se fingir de burro para aquele que se finge de inteligente."
"ENGENHARIA SOCIAL. Porque não existe patch para a ignorância humana."

Anonymous

Quote from: "dvd"Bom o esquema é aquele ali mesmo
Maior q isso so long double que aceita 12 bytes

Isso dvd, o objetivo mesmo é calcular o fatorial de números a partir do qual o resultado não caiba no maior tipo de dado possível. Não olhei se 26!-30! cabe num long double, mas esse tipo é dependente de compilador e plataforma.
Tava vendo aqui e esqueci do pessoal que já usa computador e SO de 64 bits, então é bom aumentar o range de 25-30 para 95-100.
Não é um desafio tão simples, pois quem quiser trabalhar com BigInts vai mecher com array de ints ou char.

Quem quiser ir acompanhando se os fatoriais estão corretos pode visualizar aqui:
http://membres.lycos.fr/rsirdey/facttabl.htm

nibbles

usa unsigned int... é o maior que tem acho...



"A diversão do inteligente é se fingir de burro para aquele que se finge de inteligente."
"ENGENHARIA SOCIAL. Porque não existe patch para a ignorância humana."

Anonymous

unsigned int nao é maior que long double =x

Anonymous

Bem fácil e simples de fazer usando recursividade...

Abraços