Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.kodolamacz;
- public class Fraction {
- // Pola klasy Fraction
- public int numerator;
- public int denominator;
- //Metody klasy
- public String makeFraction(int numerator, int denominator){
- if (denominator == 1){
- return String.valueOf(numerator);
- }
- else if (denominator<0) {
- return (-numerator + "/" + -denominator);
- }
- else
- return (numerator + "/" + denominator);
- }
- public String getInteger(int numerator, int denominator){
- int a,b;
- if (numerator < 0) a = -numerator; else a = numerator;
- if (denominator < 0) b = -denominator; else b = denominator;
- if (denominator ==1) {
- return String.valueOf(numerator);
- }
- else if (a > b && a%b !=0 ) {
- return String.valueOf(numerator / denominator) + " " + makeFraction(a % b, b);
- }
- else {
- return makeFraction(numerator,denominator);
- }
- }
- //najwiekszy wspolny dzielnik - algorytm Euklidesa
- public int nwd(int a, int b){
- while( a != b){
- if (a<0) a = -a;
- if (b<0) b = -b;
- if (a > b) {
- a -= b;
- }
- else
- b -= a;
- }
- return a;
- }
- public String shortenFraction (int numerator,int denominator){
- if (denominator == 0) {
- return "Mianownik nie może być zerem!";
- }
- else if(numerator == denominator) {
- return "1";
- }
- else {
- return getInteger(numerator/nwd(numerator,denominator), denominator/nwd(numerator,denominator));
- }
- }
- public String sumOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
- return shortenFraction(initNumerator*initDenominator2+initNumerator2*initDenominator,initDenominator*initDenominator2);
- }
- public String diffOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
- return shortenFraction(initNumerator*initDenominator2-initNumerator2*initDenominator,initDenominator*initDenominator2);
- }
- public String prodOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
- return shortenFraction(initNumerator*initNumerator2,initDenominator*initDenominator2);
- }
- public String qoutOfFractions(int initNumerator, int initDenominator,int initNumerator2, int initDenominator2) {
- return (prodOfFractions(initNumerator,initDenominator,initDenominator2,initNumerator2));
- }
- }
- package pl.kodolamacz;
- import pl.kodolamacz.Fraction;
- import java.util.Scanner;
- public class ThirdChallenge {
- public static void main(String[] args){
- //Kalkulator
- String answer;
- do {
- System.out.println("Proszę podaj w oddzielnych linijkach liczbę, operację matematyczną (+,-,*,/,%), a następnie kolejną liczbę:");
- Scanner scanner = new Scanner(System.in);
- int numerator = scanner.nextInt();
- scanner.next();
- int denominator = scanner.nextInt();
- String operation = scanner.next();
- int numerator2 = scanner.nextInt();
- scanner.next();
- int denominator2 = scanner.nextInt();
- Fraction fraction1 = new Fraction();
- if (operation.equals("+")) {
- System.out.println("= " + (fraction1.sumOfFractions(numerator,denominator,numerator2,denominator2)));
- } else if (operation.equals("-")) {
- System.out.println("= " + (fraction1.diffOfFractions(numerator,denominator,numerator2,denominator2)));
- } else if (operation.equals("*")) {
- System.out.println("= " + (fraction1.prodOfFractions(numerator,denominator,numerator2,denominator2)));
- } else if (operation.equals("/") && numerator2 != 0) {
- System.out.println("= " + (fraction1.qoutOfFractions(numerator,denominator,numerator2,denominator2)));
- }else if (operation.equals("/") && numerator2 == 0){
- System.out.println("Dzielnik nie może być zerem!");
- } //else if (operation.equals("%")) {
- // System.out.println("= " + (x % y));
- //}
- else {
- System.out.println("Niepoprawna operacja!");
- }
- System.out.println("Czy chcesz wykonać kolejne działanie? (T/N) ");
- answer = scanner.next();
- } while (answer.equals("T"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement