Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Laba2_2 {
- final static Scanner scan = new Scanner(System.in);
- final static int MAX_VALUE = 100;
- static int inputNumber(){
- boolean isIncorrect;
- int number = 0;
- do{
- isIncorrect = false;
- try {
- number = Integer.parseInt(scan.nextLine());
- }
- catch (NumberFormatException e) {
- System.err.println("Введите натуральное число!");
- isIncorrect = true;
- }
- if (!isIncorrect && (number < 1 || number > MAX_VALUE)) {
- System.err.println("Введите число в диапахоне от 1 до 100");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return number;
- }
- static int findNOD(int firstNumber, int secondNumber){
- while (secondNumber != 0) {
- if (firstNumber > secondNumber)
- firstNumber = firstNumber - secondNumber;
- else
- secondNumber = secondNumber - firstNumber;
- }
- return firstNumber;
- }
- static int findNOK(int firstNumber, int secondNumber){
- int nod = findNOD(firstNumber, secondNumber);
- int nok = (firstNumber * secondNumber) / nod;
- return nok;
- }
- static boolean checkDivisors(int numerator, int denominator){
- int divisors;
- divisors = findNOD(numerator, denominator);
- if (divisors > 1) {
- System.out.println("Дробь должна быть несократимой!");
- return false;
- }
- return true;
- }
- static void fixIfDivisorsFind(int[] fraction){
- while(!checkDivisors(fraction[0], fraction[1])){
- System.out.println("Введите числитель дроби");
- fraction[0] = inputNumber();
- System.out.println("Введите знаменатель дроби");
- fraction[1] = inputNumber();
- }
- }
- static int takeDenominator(int n, int q){
- int denominator = findNOK(n, q);
- return denominator;
- }
- static int takeNumerator(int denominator, int m, int n, int p, int q){
- int numerator = (denominator / n * m) + (denominator / q * p);
- return numerator;
- }
- static int[] cutFraction(int numerator, int denominator){
- int nod = findNOD(numerator, denominator);
- int finalNumerator = numerator / nod;
- int finalDenominator = denominator / nod;
- int[] arr = {finalNumerator, finalDenominator};
- return arr;
- }
- static void outputFraction(int[] arr){
- System.out.println("Сумма дробей: " + arr[0] + "/" + arr[1]);
- }
- public static void main(String[] args) {
- System.out.println("Программа считает сумму двух обыкновенных несократимых дробей");
- int m;
- int n;
- System.out.println("Введите числитель первой дроби");
- m = inputNumber();
- System.out.println("Введите знаменатель первой дроби");
- n = inputNumber();
- int[] firstFraction = {m, n};
- fixIfDivisorsFind(firstFraction);
- int p;
- int q;
- System.out.println("Введите числитель второй дроби");
- p = inputNumber();
- System.out.println("Введите знаменатель второй дроби");
- q = inputNumber();
- int[] secondFraction = {p, q};
- fixIfDivisorsFind(secondFraction);
- scan.close();
- int denominator;
- int numerator;
- denominator = takeDenominator(firstFraction[1], secondFraction[1]);
- numerator = takeNumerator(denominator, firstFraction[0], firstFraction[1], secondFraction[0], secondFraction[1]);
- int[] arr = cutFraction(numerator, denominator);
- outputFraction(arr);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement