Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Main {
- final static Scanner scan = new Scanner(System.in);
- static int nod(int A, int B) {
- if (B == 0) {
- return A;
- } else {
- return nod(B, A % B);
- }
- }
- static int inputAndCheck1() {
- int num = 0;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- try {
- num = Integer.parseInt(scan.nextLine());
- } catch (Exception err) {
- System.out.println("Ошибка. Введите целое число: \n");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return num;
- }
- static int inputAndCheck2(int num) {
- int denom;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- denom = inputAndCheck1();
- if (denom == 0) {
- System.out.println("Ошибка. Делить на ноль нельзя. Повторите ввод знаменателя:");
- isIncorrect = true;
- } else if (Math.abs(num) > Math.abs(denom)) {
- System.out.println("Ошибка. Числитель должен быть меньше знаменателя по модулю, дробь обыкновенная. Повторите ввод знаменателя:");
- isIncorrect = true;
- } else if ((nod(Math.abs(num), Math.abs(denom)) != 1) || (num < 0 && denom < 0)) {
- System.out.println("Ошибка. Дробь должна быть несократимой. Повторите ввод знаменателя:");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return denom;
- }
- static void subtractionAndPrint(int m, int n, int p, int q) {
- int newNumerator;
- int newDenominator;
- int x;
- newNumerator = m * q - p * n;
- newDenominator = n * q;
- x = nod(Math.abs(newNumerator), Math.abs(newDenominator));
- newNumerator /= x;
- newDenominator /= x;
- if (newNumerator % newDenominator == 0) {
- System.out.println("Результат вычитания дробей: \n" + newNumerator / newDenominator);
- } else {
- System.out.println("Результат вычитания дробей: \n" + m + "/" + n + " - " + p + "/" + q + " = " + newNumerator + "/" + newDenominator);
- }
- }
- public static void main(String[] args) {
- int m;
- int n;
- int p;
- int q;
- System.out.println("Эта программа выполняет вычитание 2-х обыкновенных несократимых дробей M/N и P/Q:");
- System.out.println("Введите M:");
- m = inputAndCheck1();
- System.out.println("Введите N:");
- n = inputAndCheck2(m);
- System.out.println("Введите P:");
- p = inputAndCheck1();
- System.out.println("Введите Q:");
- q = inputAndCheck2(p);
- scan.close();
- subtractionAndPrint(m, n, p, q);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement