A entrega será por aqui?
Por enquanto entregue o código
impresso em papel
(depois de testar tudo, é claro).
impresso em papel
(depois de testar tudo, é claro).
A entrega é até 16/5 mesmo? Ou 16/4?
Pra 16/4 está um pouco tarde, né?
Acho que é 16/5.
Acho que é 16/5.
Achei um pouco tarde, mas como já tinha uma solução...
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.
Aquela primeira submissão foi um pouco apressada...
A idéia é fazer uma implementação
razoavelmente cuidadosa e
usar o programa para testes interessantes.
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?
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?
Bem observado.
Vamos mudar então para base 2^{15}.
Que tal?
Vamos mudar então para base 2^{15}.
Que tal?
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?
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.
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.
Tudo bem.
Pode usar base 10^4.
Pode usar base 10^4.
Pode deixar como está.
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.
O problema acontece se você tentar escrever a resposta em base 10
Não tem problema.
Pode deixar como está.
Pode deixar como está.
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?
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?
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...
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...
Por favor, não use coisas fora do padrão ANSI.
Fique no arroz-com-feijão.
Fique no arroz-com-feijão.
Mas esta no padrão... (eu acho).
Bom... unsigned long int for great justice!
Bom... unsigned long int for great justice!
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?
Acho que você não leu as instruções...
(Será que ainda dá tempo de fazer tudo?)
(Será que ainda dá tempo de fazer tudo?)