Dúvidas

Dúvidas

by Marlon Ribas Vismari -
Number of replies: 3
Olá professor / monitor.

Eu estou com algumas dúvidas.

- Como posso fazer para achar o número de divisões? Se eu fizer subtrações sucessivas, cada subtração eu devo somar 1 até quando a primeira conta aparecer um número negativo. Pensei em usar um long double, mas se eu tiver um numero de 50 digitos e dividir por 1, então ultrapassaria 80 bits.

- No "resto da divisão" estou tendo problemas quando o primeiro número é negativo. Exemplo: -123456708912345678901234567890 % 12304567089123405123000. Para os outros fiz normalmente. Porém o raciocínio análogo não está funcionando. O código "modificado":

if(num1[0] > 0 && num2[0] > 0)
{
chama uma outra função aqui*
}

else if(num1[0] > 0 && num2[0] < 0)
{
num2[0] *= -1;
chama uma outra função aqui*
num2[0] *= -1;
}

else if(num1[0] < 0 && num2[0] < 0)
{
num2[0] *= -1;
num1[0] *= -1;
chama uma outra função aqui*
num2[0] *= -1;
num1[0] *= -1;
resto[0] *= -1;
}
else
{
num1[0] *= -1;
chama uma outra função aqui*
num1[0] *= -1;
}

* - Uma função que apenas faz subtrações de forma recursiva.


- O maior problema q estou é na multiplicação. Se na função multiplica digito eu tiver um k maior que 4, então o INT já é estourado. Qual o melhor jeito de resolver isso?

Obrigado
In reply to Marlon Ribas Vismari

Re: Dúvidas

by Francisco Reverbel -
"- Como posso fazer para achar o número de divisões? Se eu fizer subtrações sucessivas, cada subtração eu devo somar 1 até quando a primeira conta aparecer um número negativo. Pensei em usar um long double, mas se eu tiver um numero de 50 digitos e dividir por 1, então ultrapassaria 80 bits."

Não sei se estou entendendo... Em vez do "número de divisões", o que você quer achar é o "número de subtrações" quando estiver fazendo uma divisão por subtrações sucessivas, certo? Você inicializa o "quociente parcial" com zero. A cada subtração (enquanto o resultado da subtração não for negativo) você soma 1 ao "quociente parcial", certo?

Não quarde o quociente parcial (o valor ao qual você vai somar 1 em cada volta) num int, nem num long, nem num long double! Guarde-o como um "inteiro grande" (vetor de ints)!!! E toda vez que você tiver que somar 1 ao quociente parcial, use a função soma1. É para isso que ela existe!
In reply to Francisco Reverbel

Re: Dúvidas

by Marlon Ribas Vismari -
Professor, muito obrigado!

Eu não tinha enxergado isso pela função soma1.

Obrigado
Marlon
In reply to Marlon Ribas Vismari

Re: Dúvidas

by Francisco Reverbel -
"Se na função multiplica digito eu tiver um k maior que 4, então o INT já é estourado. Qual o melhor jeito de resolver isso?"

Usando um "inteiro grande" (vetor de ints) em vez de um int.