Ir para o conteúdo
  • 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

Mensagens Recomendadas

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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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);

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.