Advertisement
lucas-canellas

exercicios-lista1-17

Jan 24th, 2020
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.56 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. //Aluno: Lucas David Canellas
  4. //Matricula: 218.083.120
  5.  
  6. //17. Leia um número decimal (até 3 dígitos) e escreva o seu equivalente em numeração
  7. //romana. Utilize métodos para obter cada dígito do número decimal e para a
  8. //transformação de numeração decimal para romana (Dica1: 1 = I, 5 = V, 10 = X, 50 = L, 100 =
  9. //C, 500 = D, 1.000 = M; Dica2: utilize um vetor guardando a tradução para cada um dos
  10. //dígitos).
  11.  
  12. public class NumeroRomano {
  13.  
  14.     private double numero;
  15.     private double[] vetorDigito = new double[3];
  16.     private String[] vetorTraduzido = new String[100];
  17.  
  18.     // pegar entrada pelo construtor
  19.     public NumeroRomano() {
  20.         Scanner teclado = new Scanner(System.in);
  21.         System.out.println("Insira o numero: ");
  22.         numero = teclado.nextDouble();
  23.     }
  24.  
  25.     // pegar cada digito e armazenar em um array
  26.     public void PegarDigito() {
  27.         int i = 0;
  28.         while (numero / 10 != 0) {
  29.             vetorDigito[i] = numero % 10;
  30.             numero = (int) numero / 10;
  31.             i++;
  32.         }
  33.  
  34.     }
  35.  
  36.     public void Traducao(NumeroRomano x) {
  37.  
  38.         int num;
  39.  
  40.         num = (int) ((x.vetorDigito[0] * 1) + (x.vetorDigito[1] * 10) + (x.vetorDigito[2] * 100));// transformei os
  41.                                                                                                     // numeros do vetor
  42.                                                                                                     // em inteiro
  43.                                                                                                     // novamente
  44.         System.out.println("Numero: " + num);
  45.         int contador = 0;
  46.         // divisões sucessivas para tranasformar em romano
  47.         if (num / 100 >= 5) {
  48.             x.vetorTraduzido[contador] = "D";
  49.             num = num - 500;
  50.             contador++;
  51.         }
  52.         int aux = num;
  53.         if (num >= 100 && num < 500) {
  54.             while (aux >= 100) {
  55.                 x.vetorTraduzido[contador] = "C";
  56.                 contador++;
  57.                 aux = aux - 100;
  58.             }
  59.         }
  60.         num = aux;
  61.         if (num < 100 || num >= 50) {
  62.             while (aux >= 50) {
  63.                 x.vetorTraduzido[contador] = "L";
  64.                 contador++;
  65.                 aux = aux - 50;
  66.             }
  67.         }
  68.         num = aux;
  69.         if (num < 50 || num >= 10) {
  70.             while (aux >= 10) {
  71.                 x.vetorTraduzido[contador] = "X";
  72.                 contador++;
  73.                 aux = aux - 10;
  74.             }
  75.         }
  76.         num = aux;
  77.         if (num < 10 || num >= 5) {
  78.             while (aux >= 5) {
  79.                 x.vetorTraduzido[contador] = "V";
  80.                 contador++;
  81.                 aux = aux - 5;
  82.             }
  83.         }
  84.         num = aux;
  85.         if (num < 5 || num >= 1) {
  86.             while (aux > 0) {
  87.                 x.vetorTraduzido[contador] = "I";
  88.                 contador++;
  89.                 aux = aux - 1;
  90.             }
  91.         }
  92.  
  93.     }
  94.  
  95.     public static void main(String[] args) {
  96.         NumeroRomano x = new NumeroRomano();
  97.         x.PegarDigito();
  98.         x.Traducao(x);
  99.  
  100.         System.out.print("Numero em romano: ");
  101.         int i = 0;
  102.         while (x.vetorTraduzido[i] != null) {
  103.             System.out.print(x.vetorTraduzido[i]);
  104.             i++;
  105.         }
  106.  
  107.     }
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement