Advertisement
Guest User

ThirdChallenge

a guest
May 22nd, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.65 KB | None | 0 0
  1. package pl.kodolamacz;
  2.  
  3. public class Fraction {
  4.  
  5.     // Pola klasy Fraction
  6.    public int numerator;
  7.    public int denominator;
  8.  
  9.  
  10.  
  11.     //Metody klasy
  12.  
  13.     public String makeFraction(int numerator, int denominator){
  14.  
  15.         if (denominator == 1){
  16.             return String.valueOf(numerator);
  17.         }
  18.         else if (denominator<0) {
  19.             return (-numerator + "/" + -denominator);
  20.         }
  21.         else
  22.             return (numerator + "/" + denominator);
  23.         }
  24.  
  25.     public String getInteger(int numerator, int denominator){
  26.         int a,b;
  27.         if (numerator < 0) a = -numerator; else  a = numerator;
  28.         if (denominator < 0) b = -denominator; else  b = denominator;
  29.         if (denominator ==1) {
  30.             return String.valueOf(numerator);
  31.         }
  32.         else if (a > b && a%b !=0 ) {
  33.             return String.valueOf(numerator / denominator) + " " + makeFraction(a % b, b);
  34.  
  35.         }
  36.          else {
  37.              return makeFraction(numerator,denominator);
  38.  
  39.         }
  40.     }
  41.  
  42.     //najwiekszy wspolny dzielnik - algorytm Euklidesa
  43.     public int nwd(int a, int b){
  44.         while( a != b){
  45.             if (a<0) a = -a;
  46.             if (b<0) b = -b;
  47.             if (a > b) {
  48.                     a -= b;
  49.             }
  50.             else
  51.                     b -= a;
  52.         }
  53.         return a;
  54.     }
  55.     public String shortenFraction (int numerator,int denominator){
  56.  
  57.         if (denominator == 0) {
  58.            return "Mianownik nie może być zerem!";
  59.         }
  60.         else if(numerator == denominator) {
  61.             return "1";
  62.         }
  63.         else {
  64.             return getInteger(numerator/nwd(numerator,denominator), denominator/nwd(numerator,denominator));
  65.         }
  66.  
  67.     }
  68.     public String sumOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
  69.  
  70.         return shortenFraction(initNumerator*initDenominator2+initNumerator2*initDenominator,initDenominator*initDenominator2);
  71.     }
  72.     public String diffOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
  73.  
  74.         return shortenFraction(initNumerator*initDenominator2-initNumerator2*initDenominator,initDenominator*initDenominator2);
  75.     }
  76.  
  77.     public String prodOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
  78.  
  79.         return shortenFraction(initNumerator*initNumerator2,initDenominator*initDenominator2);
  80.     }
  81.  
  82.     public String qoutOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
  83.  
  84.         return (prodOfFractions(initNumerator,initDenominator,initDenominator2,initNumerator2));
  85.     }
  86.  
  87. }
  88.  
  89.  
  90. package pl.kodolamacz;
  91. import pl.kodolamacz.Fraction;
  92. import java.util.Scanner;
  93.  
  94. public class ThirdChallenge {
  95.  
  96.     public static void main(String[] args){
  97.  
  98.         //Kalkulator
  99.         String answer;
  100.         do {
  101.             System.out.println("Proszę podaj w oddzielnych linijkach liczbę, operację matematyczną (+,-,*,/,%), a następnie kolejną liczbę:");
  102.             Scanner scanner = new Scanner(System.in);
  103.             int numerator = scanner.nextInt();
  104.             scanner.next();
  105.             int denominator = scanner.nextInt();
  106.             String operation = scanner.next();
  107.             int numerator2 = scanner.nextInt();
  108.             scanner.next();
  109.             int denominator2 = scanner.nextInt();
  110.  
  111.  
  112.             Fraction fraction1 = new Fraction();
  113.  
  114.  
  115.             if (operation.equals("+")) {
  116.                 System.out.println("= " + (fraction1.sumOfFractions(numerator,denominator,numerator2,denominator2)));
  117.             } else if (operation.equals("-")) {
  118.                 System.out.println("= " + (fraction1.diffOfFractions(numerator,denominator,numerator2,denominator2)));
  119.             } else if (operation.equals("*")) {
  120.                 System.out.println("= " + (fraction1.prodOfFractions(numerator,denominator,numerator2,denominator2)));
  121.             } else if (operation.equals("/") && numerator2 != 0) {
  122.                 System.out.println("= " + (fraction1.qoutOfFractions(numerator,denominator,numerator2,denominator2)));
  123.             }else if (operation.equals("/") && numerator2 == 0){
  124.                 System.out.println("Dzielnik nie może być zerem!");
  125.             } //else if (operation.equals("%")) {
  126.                // System.out.println("= " + (x % y));
  127.             //}
  128.             else {
  129.                 System.out.println("Niepoprawna operacja!");
  130.             }
  131.  
  132.             System.out.println("Czy chcesz wykonać kolejne działanie? (T/N) ");
  133.             answer = scanner.next();
  134.  
  135.         } while (answer.equals("T"));
  136.  
  137.     }
  138.  
  139.  
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement