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

milton

noobice

5 mensagens neste tópico

hmm... tou aki com um prob a resolver um problema simples, o problema do programa que escrevi é que ta sempre a descartar os numeros da variavel resto, isso nao é nenhum problema pk é o que é suposto fazer... eu gostaria de saber se ha alguma maneira de nao reinicializar a variavel.. ou ir acumulando(sem os somar ou fazer outra qualquer operaçao matematica) os numeros que vao parar á variavel

/*5. ** Pretende-se escrever um programa em Java que leia do teclado uma quantidade decimal,

inteira não negativa, e que a escreva no monitor, pela ordem inversa dos seus algarismos. A

entrada de dados deve ser organizada como se indica a seguir.

Valor numérico inteiro? ...

A saída do resultado deve obedecer ao formato seguinte.

quantidade inicial -> quantidade final*/

import static pt.ua.prog.WIO.*;

public class p2
{
  public static void main(String[] args)
  {
    int decimal, quociente, resto;
    
    do
    {
      decimal=readInt("Valor numérico inteiro: ");
    }while(decimal<=0);
    
    resto=decimal%10;
    quociente=decimal/10;
   do
   {
    resto=quociente%10;
    quociente=quociente/10;
   }while(quociente!=0);   
    
    writeString("quantidade inicial é "+decimal+" -> quantidade final é "+resto);
  }
}

P.S.: eu consigo fazer o prog se souber exactamente quantos numeros vao ser introduzidos... mas obvio que nao é esse objectivo.. qualquer ideia será bem vinda ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta assim:

import static pt.ua.prog.WIO.*;

public class p2
{
  public static void main(String[] args)
  {
    int decimal, quociente, resto=0;
  
    do
    {
      decimal=readInt("Valor numérico inteiro: ");
    }while(decimal<=0);

    quociente = decimal;

   do
   {
    resto*=10;
    resto+=quociente%10;
    quociente=quociente/10;
   }while(quociente!=0);   
    
    writeString("quantidade inicial é "+decimal+" -> quantidade final é "+resto);
  }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ahhhhhhhhh... :D sou um burro... muito obrigado :P (era tão simples e apenas uma questao matematica tsk) mais uma vez obrigado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para quem não tem essa library disponível, deixo aqui um source compatível para quem quiser experimentar

import java.io.*;

public class teste
{
  public static void main(String[] args) throws IOException
  {
    int decimal, quociente, resto=0;
BufferedReader input =  new BufferedReader(new InputStreamReader(System.in));
  
    do
    {
   System.out.println("Introduza um numero decimal Positivo");
      decimal=Integer.parseInt(input.readLine());
    }while(decimal<=0);

    quociente = decimal;

do
   {
    resto*=10;
    resto+=quociente%10;
    quociente=quociente/10;
    }while(quociente!=0);   
    
    System.out.println("quantidade inicial é "+decimal+" -> quantidade final é "+resto);
  }
}

Já agora, alguem daqui tem uma explicação matemática para isto?? está me a custar perceber o segundo ciclo ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1. resto*=10;
2. resto+=quociente%10;
3. quociente=quociente/10;

Basicamente está a percorrer cada um dos algarismos, começando pelo mais à direita. Por exemplo, o numero 123: resto fica com 3 (resto da divisão inteira de 123 por 10) e retira o 3 do numero dividindo-o por 10. Na segunda iteração multiplica o resto e fica com 30, adiciona ao resto o 2 (fica 32) , divide o quociente que fica só com 1. No ultimo multiplica de novo o resto (320), soma-lhe 1 e fica com o quociente a zero e acaba. Ficaste com 321 no resto.

0

Partilhar esta mensagem


Link 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