Tarefa opcional

Tarefa opcional

por William Gnann -
Número de respostas: 20
A entrega será por aqui?
Em resposta à William Gnann

Re: Tarefa opcional

por Paulo Feofiloff -
Por enquanto entregue o código
impresso em papel
(depois de testar tudo, é claro).
Em resposta à Paulo Feofiloff

Re: Tarefa opcional

por Tiago Togores -
A entrega é até 16/5 mesmo? Ou 16/4?
Em resposta à Tiago Togores

Re: Tarefa opcional

por Paulo Feofiloff -
Pra 16/4 está um pouco tarde, né?
Acho que é 16/5.

Em resposta à Paulo Feofiloff

Re: Tarefa opcional

por Tiago Togores -
Achei um pouco tarde, mas como já tinha uma solução...
Em resposta à Tiago Togores

Re: Tarefa opcional

por Paulo Feofiloff -
Tem razão.
Aquela primeira submissão foi um pouco apressada...

A idéia é fazer uma implementação
razoavelmente cuidadosa e
usar o programa para testes interessantes.
Em resposta à Paulo Feofiloff

Re: Tarefa opcional

por Walter Erquinigo -
Sobre a multiplicacao de números:
se eu usar o tipo de dado "int", entao o máximo número que posso ter é 2^31-1, entao, acho que deveria usar o tipo "long long int", para ter um número de até 2^63-1. Assim, eu faco todas as operacoes aritméticas dos bigintegers mod 2^31.
É isso correto ou você tentou dizer algo diferente quando determinou essa base?
Em resposta à Walter Erquinigo

Re: Tarefa opcional

por Paulo Feofiloff -
Bem observado.
Vamos mudar então para base 2^{15}.
Que tal?
Em resposta à Paulo Feofiloff

Re: Tarefa opcional

por João Pedro Kerr Catunda -
minha máquina, assim como muitas outras, é 64 bits, motivo pela qual achei que 31 era o suficiente. Posso manter assim, devo baixar para 15?
Em resposta à João Pedro Kerr Catunda

Re: Tarefa opcional

por Walter Erquinigo -
Nao depende só da sua máquina, depende também do compilador.
Agora, acho que algo necesario é imprimir o resultado da multiplicacao na tela para nao trabalhar em uma caixa preta. Entao, a base 2^15 nao é tao bonita para isso. Normalmente costumo usar os bignumbers em base 10^4, o que ê um pouco mais do que 2^13. O que é bonito de usar essa base é que podemos usar simplesmente printf("%04d",digits[i]) para imprimir um dígito nessa base, o que é o mesmo que 4 dígitos na base 10. Se você acha bem, gostaria de poder usar essa base, pois nao preciso fazer nada em especial para ver o resultado na base 10, senao usarei a base 2^15.
Em resposta à Paulo Feofiloff

Re: Tarefa opcional

por Francisco Zigmund Sokol -
Já estava implementando com base 2^31 e os vetores que representavam os números eram de long long e não de int... Mas não daria tanto trabalho mudar isso.
Em resposta à William Gnann

Re: Tarefa opcional

por William Gnann -
Estava pensando, é necessário que os números tenham sinal?
Porque, se não for, unsigned long int seria suficiente para conter qualquer uma das bases propostas, pois vai, no mínimo, de 0 a 2^32-1.
Além disso, não faz sentido pensar em sinal para 'dígitos' de um número, faz?
Em resposta à William Gnann

Re: Tarefa opcional

por Almir Alves Pereira -
Para quem não sabe o que usar:
int16_t -> int de 16 bits
uint16_t -> unsigned int de 16 bits
int32_t -> int de 32 bits
uint32_t -> unsigned int de 32 bits
int64_t -> int de 64 bits
uint64_t -> unsigned int de 64 bits
Eles estão definidos na stdint.h e são compativeis com -ansi
BTW, acho que é possivel fazer o programa de forma que a base possa ser passada como argumento...
Em resposta à William Gnann

Re: Tarefa opcional

por Francisco Zigmund Sokol -
Devemos entregar apenas um único arquivo com o fonte da nossa implementação ou podemos entregar um .tar com alguns resultados dos testes feitos (tipo gráficos, saídas de entradas grandes, etc), além do código?