Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //package naprednolabs;
- import java.util.Scanner;
- import java.util.stream.IntStream;
- public class RomanConverterTest {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- IntStream.range(0, n)
- .forEach(x -> System.out.println(RomanConverter.toRoman(scanner.nextInt())));
- scanner.close();
- }
- }
- class RomanConverter {
- /**
- * Roman to decimal converter
- * @param n number in decimal format
- * @return string representation of the number in Roman numeral
- */
- public static String toRoman(int n) {
- String roman = ""; // prazen string da se lepat na nego
- int numc = numDigits(n); // da gi izbroe cifrite za da znajme dali se iljaarki
- if (numc > 3) // za iljadarki ako ima
- roman = countThousands(n, roman);
- if (numc > 2) // za stotki ako ima
- roman = countHundreds(n, roman);
- if(numc > 1) // za desetki ako ima
- roman = countTens(n, roman);
- if(numc > 0) // za edinici
- roman = countOnes(n, roman);
- return roman;
- }
- private static String countOnes(int numc, String roman) {
- int n = numc % 10;
- if (n < 4)
- for(int i=0; i<n; i++)
- roman+="I"; // za 1,2,3 deka se I II III soodvetno
- if(n == 4)
- roman+="IV";
- if(n>4 && n<9) // V, VI, VII, VIII
- roman += "V";
- if(n>5 && n<9) // VI, VI, VIII
- for (int i = 0; i < n - 5; i++)
- roman += "I";
- if(n==9)
- roman += "IX";
- return roman;
- }
- private static String countTens(int n, String roman) {
- int help = (n/10)%10; // koj e brojot na desetkite
- if(help<4)
- for (int i = 0; i < help; i++)
- roman += "X"; // X, XX, XXX za 10 20 30 soodvetno
- if(help==4)
- roman += "XL";
- if(help>4 && help<9)
- roman += "L";
- if(help>5 && help<9)
- for (int i = 0; i < help - 5; i++)
- roman += "X";
- if(help==9)
- roman += "XC";
- return roman;
- }
- private static String countHundreds(int n, String roman) {
- int help = (n/100)%10; // kolku stotki ima brojceto
- if(help<4) // za 100 200 i 300 ima 1 C, 2 C i 3 C zatoa so for ciklus moze se istera dodusa i za 4 ima C
- for(int i=0; i<help; i++)
- roman+="C";
- if(help == 4)
- roman+="CD";
- if (help>4 && help<9) // ako znam so praam jas u zivotot
- roman+="D";
- if (help>5 && help<9) // za 6 7 8 treba da ima 1 2 i 3 C zalepeno soodvetno
- for(int i=0; i<help-5; i++)
- roman+="C";
- if (help==9)
- roman+="CM";
- return roman;
- }
- private static String countThousands(int n, String roman) {
- for(int i=0;i<n/1000; i++) // ke zeme kolku iljadarki ima
- roman+="M"; // ke lepe kolku M treba na stringot kako pocetok
- return roman;
- }
- private static int numDigits(int n) {
- int counter=0;
- for(int i=n; i>0; i/=10)
- counter++;
- return counter;
- }
- }
- /*
- Да се напише метод кој ќе прима еден цел број и ќе ја печати неговата репрезентација како Римски број.
- Пример Aко ако се повика со парамететар 1998, излезот треба да биде M CM XC VIII.
- */
Add Comment
Please, Sign In to add comment