This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Nhờ tư vấn Lập trình tính phép cộng trừ nhân chia 2 hỗn số?

các a các chú cho e hỏi bài này với ạ ,e lớp 11 đang tự học java tới bài này k biết làm ạ
lập trình tính phép cộng trừ nhân chia 2 hỗn số ạ mong mn chỉ giúp
 

malemkhoang

Rìu Chiến

Hỗn số: lớp 5 + lớp 6 = lớp 11

1. Nhập liệu (ntn để máy hiểu được hỗn số?):
Bạn phải tự nghĩ ra quy ước nhập liệu (ví dụ 2+1/3).
Phải chỉ rõ các thành phần (dù là màn hình ký tự hay màn hình đồ họa):
- phần nguyên,
- tử số,
- mẫu số.

Dĩ nhiên cũng phải xét trường hợp đặc biệt:
- phần nguyên = 0;
- tử số = 0;
- mẫu số = 0.

2. Tính toán:
Sử dụng các toán tử và hàm toán học của Java.

3. Trình bày kết quả:
- Màn hình ký tự thì nhập ntn, ra như thế [(1+2/3) + (4+5/6) = (6+1/2)].
- Màn hình đồ họa thì...

 

tiengdonhoarira

Búa Gỗ
rảnh nên nghịch chơi

Java:
package com.company;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.List;
import java.util.HashMap;

public class MyFraction {
    int numerator;
    int denominator;

    public MyFraction(int numerator, int denominator) {
        this.numerator = numerator;
        this.denominator = denominator;
    }


    MyFraction add(MyFraction fraction2) {
        int numerator = this.numerator * fraction2.denominator + fraction2.numerator * this.denominator;
        int denominator = this.denominator * fraction2.denominator;
        MyFraction fraction = new MyFraction(numerator, denominator);
        fraction.simpleFraction();
        return fraction;
    }

    MyFraction subtract(MyFraction fraction2) {
        int numerator = this.numerator * fraction2.denominator - fraction2.numerator * this.denominator;
        int denominator = this.denominator * fraction2.denominator;
        MyFraction fraction = new MyFraction(numerator, denominator);
        fraction.simpleFraction();
        return fraction;
    }

    public void simpleFraction() {
        int greatestCommonDivisor = this.greatestCommonDivisor();
        this.numerator = this.numerator / greatestCommonDivisor;
        this.denominator = this.denominator / greatestCommonDivisor;
    }

    int greatestCommonDivisor() {
        List<Integer> primeListNumerator = primeFactorizationList(this.numerator);
        List<Integer> primeListDenominator = primeFactorizationList(this.denominator);

        HashMap<Integer, Integer> primeFactorizationHashNumerator = new HashMap<Integer, Integer>();
        for (Integer primeNumberInNumerator : primeListNumerator) {
            int n;
            if (!primeFactorizationHashNumerator.containsKey(primeNumberInNumerator)) {
                n = 1;
            } else {
                n = primeFactorizationHashNumerator.get(primeNumberInNumerator) + 1;
            }
            primeFactorizationHashNumerator.put(primeNumberInNumerator, n);
        }


        HashMap<Integer, Integer> primeFactorizationHashDenominator = new HashMap<Integer, Integer>();
        for (Integer primeNumberInDenominator : primeListDenominator) {
            int n;
            if (!primeFactorizationHashDenominator.containsKey(primeNumberInDenominator)) {
                n = 1;
            } else {
                n = primeFactorizationHashDenominator.get(primeNumberInDenominator) + 1;
            }
            primeFactorizationHashDenominator.put(primeNumberInDenominator, n);
        }

        int greatestCommonDivisor = 1;

        Iterator it = primeFactorizationHashNumerator.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry) it.next();
            int number = (int) pair.getKey();
            int exponentiation1 = (int) pair.getValue();
            int exponentiation = 0;
            if (primeFactorizationHashDenominator.get(number) != null) {
                int exponentiation2 = primeFactorizationHashDenominator.get(number);
                exponentiation = exponentiation1 > exponentiation2 ? exponentiation2 : exponentiation1;
            }
            if (exponentiation > 0) {
                greatestCommonDivisor = greatestCommonDivisor * exponentiationNumber(number, exponentiation);
            }
        }

        return greatestCommonDivisor;
    }

    public int exponentiationNumber(int number, int exponentiation) {
        int n = exponentiation - 1;
        int result = number;
        while (n > 0) {
            result = result * number;
            n = n - 1;
        }
        return result;
    }

    public List<Integer> primeFactorizationList(int number) {
        List<Integer> primeNumberList = primeNumberList(number);
        List<Integer> primeFactorizationList = new ArrayList<Integer>();
        if (isPrime(number, primeNumberList)) {
            primeFactorizationList.add(number);
        } else {
            int n = number;
            for (int i = 0; i < primeNumberList.size(); i++) {
                int primeNumber = primeNumberList.get(i);
                while (n % primeNumber == 0) {
                    primeFactorizationList.add(primeNumber);
                    n = n / primeNumber;
                }
            }
        }
        return primeFactorizationList;
    }


    public List<Integer> primeNumberList(int number) {
        List<Integer> primeNumberList = new ArrayList<Integer>();
        for (int i = 2; i <= number; i++) {
            if (isPrime(i, primeNumberList)) {
                primeNumberList.add(i);
            }
        }
        return primeNumberList;
    }

    public boolean isPrime(int number, List<Integer> primeNumberList) {
        if (primeNumberList.contains(number)) {
            return true;
        }
        for (Integer integer : primeNumberList) {
            if (number % integer == 0) {
                return false;
            }
        }
        return true;
    }

    void println() {
        System.out.println(this.numerator + "/" + this.denominator);
    }

}

Java:
package com.company;

import com.company.MyFraction;

public class Main {

    public static void main(String[] args) {
        MyFraction fraction1 = new MyFraction(8, 12);
        MyFraction fraction2 = new MyFraction(8, 12);
        MyFraction fraction3 = fraction1.add(fraction2);
        fraction3.println();
        MyFraction fraction4 = fraction1.subtract(fraction2);
        fraction4.println();
    }

}
 
Sửa lần cuối: