Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sheep N Wolf

Eliminar algarismos 1 a 1

Recommended Posts

Sheep N Wolf

Boas, eu ainda sou muito verdinho a programar, comecei à pouco tempo a fazer programação orientada a objectos.

A minha dúvida é:

Quero ler um int do teclado (até 10 milhões) e quero ir eliminando 1 algarismo de cada vez. Existe alguma maneira de fazer isto sem gravar o int num vector de char's?

Share this post


Link to post
Share on other sites
softklin

Depende da direcção que queres, mas podes ir dividindo o número por 10 (divisão de inteiros) num ciclo, e assim "perdes" sempre uma casa.

Por exemplo:

12345

ficaria

12345 / 10 = 1234

1234 / 10 = 123

123 / 10 = 12

...


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Sheep N Wolf

Pois, mas eu queria eliminar do inicio para o fim  :thumbsup:

Tenho o número 493857621.

Queria eliminar primeiro o 4 e ficava com o 93857621, depois eliminava o 9 e ficava com 3857621, e por aí fora.

Share this post


Link to post
Share on other sites
jarsantos
int num=123456;
int num_digitos;
int digito;

do
{
num_digitos = Math.log(num)/Math.log(10);
digito = num/Math.pow(10, num_digitos);
num = num%Math.pow(10, num_digitos);

System.out.println("Digito: " + digito + " falta processar: " + num);
} while(num != 0);

Share this post


Link to post
Share on other sites
Sheep N Wolf

Peço desculpa, eu não me expliquei bem. A divisão por 10 funciona se quiser retirar o último ou primeiro algarismo (invertendo o número neste último caso), mas eu quero algo mais.

Depois de eliminar o último algarismo o número é sujeito a uma série de condições, e enquanto passar por essas condições continuo a eliminar algarismos. Quando falhar numa dessas condições queria voltar ao número original e retirar o penúltimo algarismo. O processo repete-se até arranjar uma ordem de eliminação de algarismos que passe por todos os testes.

Se parecer muito confuso...o que eu quero basicamente é ver se um dado número é um primo apagável (http://mathworld.wolfram.com/DeletablePrime.html) ou não.

Share this post


Link to post
Share on other sites
Sheep N Wolf

Ok, alguns progressos.

Vou tratar dos números como Strings, talvez seja mais fácil para depois parti-los não?  ;)

Estava a tentar usar o substring para isso mas dessa maneira só consigo ler a partir de certo algarismo. Ou seja se começar a ler do 3º algarismo, ele elimina o 1º e 2º algarismo quando eu só queria que ele eliminasse o 2º.

Alguma ideia?

Share this post


Link to post
Share on other sites
jarsantos

Com poucas alterações ao meu código consegues fazer isso que queres, o principal é perceberes o funcionamento do Log, da divisão e do resto da divisão.

imagina:

123456 e queres remover o número 3

divides: 123456 / 10000 = 123

apanhas o resto: 123456 % 1000 = 456

123 / 10 = 12

12 * 1000 = 12000

12000 + 456 = 12456

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.