FORUM DARKERS

Tecnologia & Informática => Programação => C/C#/C++ => Topic started by: Anonymous on 22 de August , 2006, 01:35:53 AM

Title: Desafio de Programação - Fatorial
Post by: Anonymous on 22 de August , 2006, 01:35:53 AM
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.
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 22 de August , 2006, 04:08:26 PM
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?
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 22 de August , 2006, 05:27:03 PM
Não enteni muito bem o desafio, poderia explicar melhor??
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 22 de August , 2006, 06:02:05 PM
É eu tbm to com duvidas =L
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 23 de August , 2006, 07:07:56 PM
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.
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 25 de August , 2006, 12:09:44 AM
Bom o esquema é aquele ali mesmo
Maior q isso so long double que aceita 12 bytes
Title: Re: Desafio de Programação - Fatorial
Post by: nibbles on 25 de August , 2006, 11:09:17 AM
int fat(int a)
{
if (a)
return (a * fat(a-1));
else
return(1);
}
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 26 de August , 2006, 12:27:37 PM
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 (http://membres.lycos.fr/rsirdey/facttabl.htm)
Title: Re: Desafio de Programação - Fatorial
Post by: nibbles on 26 de August , 2006, 03:39:45 PM
usa unsigned int... é o maior que tem acho...
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 27 de August , 2006, 01:23:37 PM
unsigned int nao é maior que long double =x
Title: Re: Desafio de Programação - Fatorial
Post by: Anonymous on 02 de September , 2006, 09:46:05 AM
Bem fácil e simples de fazer usando recursividade...

Abraços