Nhờ tư vấn - Lập trình tính phép cộng trừ nhân chia 2 hỗn số? | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

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
hon-so-la-gi-cach-cong-tru-hon-so-cach-tinh-nhanh-hon-so-b.jpg

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ì...

hon-so-la-gi-cach-cong-tru-hon-so-cach-tinh-nhanh-hon-so-a.jpg
 

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:


Top