Advertisement
ryabov

Untitled

Oct 26th, 2021
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.68 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class Laba2_2 {
  3.     final static Scanner scan = new Scanner(System.in);
  4.     final static int MAX_VALUE = 1000;
  5.     static int checkException(int number){
  6.         boolean isIncorrect;
  7.         number = 0;
  8.         do{
  9.             isIncorrect = false;
  10.             try {
  11.                 number = Integer.parseInt(scan.nextLine());
  12.             }
  13.             catch (NumberFormatException e) {
  14.                 System.err.println("Введите натуральное число!");
  15.                 isIncorrect = true;
  16.             }
  17.             if (!isIncorrect && (number < 1 || number > MAX_VALUE)) {
  18.                 System.err.println("Введите число в диапахоне от 1 до 100");
  19.                 isIncorrect = true;
  20.             }
  21.         } while (isIncorrect);
  22.         return number;
  23.     }
  24.     static int inputNumber(String text) {
  25.         int number = 0;
  26.         System.out.println("Введите " + text + " дроби: ");
  27.         number = checkException(number);
  28.         return number;
  29.     }
  30.     static int findNOD(int firstNumber, int secondNumber){
  31.         while (secondNumber != 0) {
  32.             if (firstNumber > secondNumber)
  33.                 firstNumber = firstNumber - secondNumber;
  34.             else
  35.                 secondNumber = secondNumber - firstNumber;
  36.         }
  37.         return firstNumber;
  38.     }
  39.     static int findNOK(int firstNumber, int secondNumber){
  40.         int nod = findNOD(firstNumber, secondNumber);
  41.         int nok = (firstNumber * secondNumber) / nod;
  42.         return nok;
  43.     }
  44.     static void checkDivisors(int numerator, int denominator){
  45.         int divisors;
  46.         boolean isIncorrect;
  47.         do {
  48.             isIncorrect = false;
  49.             divisors = findNOD(numerator, denominator);
  50.             if (divisors > 1) {
  51.                 System.out.println("Дробь должна быть несократимой!");
  52.                 numerator = inputNumber("числитель");
  53.                 denominator = inputNumber("знаменатель");
  54.                 isIncorrect = true;
  55.             }
  56.         }while(isIncorrect);
  57.     }
  58.     static int takeDenominator(int n, int q){
  59.         int denominator = findNOK(n, q);
  60.         return denominator;
  61.     }
  62.     static int takeNumerator(int denominator, int m, int n, int p, int q){
  63.         int numerator = (denominator / n * m) + (denominator / q * p);
  64.         return numerator;
  65.     }
  66.     static int[] cutFraction(int numerator, int denominator){
  67.         int nod = findNOD(numerator, denominator);
  68.         int finalNumerator = numerator / nod;
  69.         int finalDenominator = denominator / nod;
  70.         int[] arr = {finalNumerator, finalDenominator};
  71.         return arr;
  72.     }
  73.     static void outputFraction(int[] arr){
  74.         System.out.println("Сумма дробей: " + arr[0] + "/" + arr[1]);
  75.     }
  76.     public static void main(String[] args) {
  77.         System.out.println("Программа считает сумму двух обыкновенных несократимых дробей");
  78.         int m;
  79.         int n;
  80.         m = inputNumber("числитель первой");
  81.         n = inputNumber("знаменатель первой");
  82.         checkDivisors(m, n);
  83.         int p;
  84.         int q;
  85.         p = inputNumber("числитель второй");
  86.         q = inputNumber("знаменатель второй");
  87.         checkDivisors(p, q);
  88.         scan.close();
  89.         int denominator;
  90.         int numerator;
  91.         denominator = takeDenominator(n, q);
  92.         numerator = takeNumerator(denominator, m, n, p, q);
  93.         int[] arr = cutFraction(numerator, denominator);
  94.         outputFraction(arr);
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement