Jump to content

noobice


milton

Recommended Posts

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 😉

Link to comment
Share on other 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);
  }
}
Link to comment
Share on other 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 😉

Link to comment
Share on other 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.

Link to comment
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
×
×
  • Create New...

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.