SóProvas


ID
1750810
Banca
FCC
Órgão
TRE-AP
Ano
2015
Provas
Disciplina
Programação
Assuntos

Considere o programa Java abaixo.

      import javax.swing.JOptionPane;

      public class Prova {

             public static void main(String[] args) {

                    int a, b, r;

                    a = Integer.parseInt(JOptionPane.showInputDialog("Valor de a"));

                    b = Integer.parseInt(JOptionPane.showInputDialog("Valor de b"));

                     if (a != 0 && b != 0) {

                          r = a % b;

                          while (r != 0) {

                                a = b;

                                b = r;

                                r = a % b;

                           }

                          JOptionPane.showMessageDialog(null, b);

                      } else {

                           System.out.print("valor inválido");

                      }

             }

       } 

Se forem lidos os valores 20 e 24 será exibido 

Alternativas
Comentários
  • // Primeiro trecho

    if (a != 0 && b != 0) { 
        r = a % b; 

    // a = 20,  b = 24, r=20

    // Cálculo de r: 20 dividido por 24 é igual a 0 no quociente e 20 de resto, pois % é operador de módulo o qual obtém apenas o resto.

     

    // Segundo trecho, 1ª passada no loop enquanto r diferente de 0

     while (r != 0) { 
        a = b; //a = 24
        b = r; //b = 20 
        r = a % b; //r = 4

    // Segundo trecho, 2ª passada no loop enquanto r diferente de 0

     while (r != 0) { 
        a = b; // a = 20
        b = r; //
    b = 4 
        r = a % b; //r = 0 (opa! O resto de 20 divido por 4 é 0, o loop termina aqui)

     

    // Terceiro trecho

     JOptionPane.showMessageDialog(null, b); // b = 4

  • Como assim 20 % 24 tem resto 20? Não entendi ='/

  • Isso mesmo Icaro.

    Não tem como obter um valor inteiro na divisão de 20 por 24, então no MOD sobra exatamente o valor que se quer dividir, o valor 20

    Na dúvida do resultado, use a calculadora do Windows no modo Científica que vai te mostrar exatamente isso

  • Então toda divisão de um número menor por um maior com o operador de módulo vai retornar o menor?

  • Neste cenário, sim.

    Resumindo...

    24 MOD 20 --> Neste caso, existirá a sobra, que será 4

    20 MOD 24 --> Neste caso, não existirá a sobra, ficará exatamente o valor 20

  • Obrigado por tirar a dúvida! Rsrs