Pessoal, estou tentando descobrir o melhor método para ler um número e excluir algarismos desse número, obtendo um novo número sem os algarismos excluídos (desculpem-me pela redundância).
Abaixo explico melhor minha tentativa.
Não pretendo que resolvam o problema, mas apenas me apontem o que está errado nessa parte do código, indicando o melhor caminho para a solução. Já modifiquei o código várias vezes que já nem sei mais o que estou fazendo. Pelas simulações que fiz (alterando meu código para imprimir a saída após cada loop, verifiquei que as divisões não estão saindo conforme esperava).
Como exemplo, suponha que eu tenha essas duas variáveis:
n1_original = 4621
n2_original = 3625
A idéia é comparar as duas variáveis acima e, encontrando algarismos iguais ocupando casas decimais iguais, retirar esses algarismos de n1 e n2, obtendo novas variáveis; por exemplo após retirar o '2' e o '6' de n1 e n2 e, guardando os novos valores em n1_novo e em n2_novo, respectivamente, obteria: n1_novo = 41 e n2_novo = 35. Pois o algarismo 2 está presente nos dois números ocupando a casa das dezenas, o mesmo ocorre com o algarismo 6, ocupando a casa das centenas.
Para isso, declaro uma outra variável, que chamarei de "divisor" que será útil aqui, e vou comparando os restos das divisões de n1 e n2 por 10. Ou seja:
Bom, desculpem-me pela longa mensagem, mas achei que ficaria mais fácil de explicar o que estou tentando fazer incluindo parte do meu código aqui. Agradeço qualquer orientação.
Pergunta
danted
Pessoal, estou tentando descobrir o melhor método para ler um número e excluir algarismos desse número, obtendo um novo número sem os algarismos excluídos (desculpem-me pela redundância).
Abaixo explico melhor minha tentativa.
Não pretendo que resolvam o problema, mas apenas me apontem o que está errado nessa parte do código, indicando o melhor caminho para a solução. Já modifiquei o código várias vezes que já nem sei mais o que estou fazendo. Pelas simulações que fiz (alterando meu código para imprimir a saída após cada loop, verifiquei que as divisões não estão saindo conforme esperava).
Como exemplo, suponha que eu tenha essas duas variáveis:
n1_original = 4621
n2_original = 3625
A idéia é comparar as duas variáveis acima e, encontrando algarismos iguais ocupando casas decimais iguais, retirar esses algarismos de n1 e n2, obtendo novas variáveis; por exemplo após retirar o '2' e o '6' de n1 e n2 e, guardando os novos valores em n1_novo e em n2_novo, respectivamente, obteria: n1_novo = 41 e n2_novo = 35. Pois o algarismo 2 está presente nos dois números ocupando a casa das dezenas, o mesmo ocorre com o algarismo 6, ocupando a casa das centenas.
Para isso, declaro uma outra variável, que chamarei de "divisor" que será útil aqui, e vou comparando os restos das divisões de n1 e n2 por 10. Ou seja:
/* declarações de variáveis (todas inteiras) */
int n1_original, n2_original, n1 = n1_original, n2 = n2_original, n1_novo = n1, n2_novo = n2, divisor = 10;
E teria um loop que ficaria assim:
while(n1 > 0){
if(n1%10 == n2%10){
/* aqui entra um contador, mas não interessa na minha dúvida */
/* se o algarismo das unidades não for excluído */
if(n2_novo%10 != n1_novo%10){
n1_novo = (n1_original/divisor)*(divisor/10) + n1_novo%(divisor/10);
n2_novo = (n2_original/divisor)*(divisor/10) + n2_novo%(divisor/10);
}
/* se o algarismo das unidades for excluído */
else{
n2_novo = n2_original/divisor;
n1_novo = n1_original/divisor;
}
}/*fim if */
n1 = n1 / 10;
n2 = n2 / 10;
divisor = divisor*10;
} /*fim while */
Minha dúvida é mais quanto à linha:
n1_novo = (n1_original/divisor)*(divisor/10) + n1_novo%(divisor/10);
Bom, desculpem-me pela longa mensagem, mas achei que ficaria mais fácil de explicar o que estou tentando fazer incluindo parte do meu código aqui. Agradeço qualquer orientação.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.