Advertisement
ryabov

2_2 c++

Oct 13th, 2021
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. float getException(int number) {
  4.     bool isIncorrect;
  5.     number = 0;
  6.     do{
  7.         cin >> number;
  8.         isIncorrect = false;
  9.         if (cin.fail()){
  10.             cin.clear();
  11.             cin.ignore(1000, '\n');
  12.             cout << "Введите натуральное число!\n";
  13.             isIncorrect = true;
  14.         }
  15.     }while (isIncorrect);
  16.     return number;
  17. }
  18. float getFirstFraction() {
  19.     bool isIncorrect;
  20.     int numerator = 0;
  21.     int denominator = 0;
  22.     do {
  23.         isIncorrect = false;
  24.         cout << "Введите числитель первой дроби\n";
  25.         numerator = getException(numerator);
  26.         int numeratorForFindingDivisors = numerator;
  27.         cout << "Введите знаменатель первой дроби\n";
  28.         denominator = getException(denominator);
  29.         int denominatorForFindingDivisors = denominator;
  30.         if (denominator == 0) {
  31.             cout << "Введите знаменатель, не равный 0!\n";
  32.             isIncorrect = true;
  33.         }
  34.         else if (numerator == 0) {
  35.             cout << "Введите числитель, не равный 0!\n";
  36.             isIncorrect = true;
  37.         }
  38.         else while (denominatorForFindingDivisors != 0) {
  39.             if (numeratorForFindingDivisors > denominatorForFindingDivisors)
  40.                 numeratorForFindingDivisors = numeratorForFindingDivisors - denominatorForFindingDivisors;
  41.             else
  42.                 denominatorForFindingDivisors = denominatorForFindingDivisors - numeratorForFindingDivisors;
  43.         }
  44.         if (numeratorForFindingDivisors > 1) {
  45.             cout << "Дробь должна быть несократимой! Попробуйте ещё.\n";
  46.             isIncorrect = true;
  47.         }
  48.     } while (isIncorrect);
  49.     float fraction = (float)numerator / (float)denominator;
  50.     return fraction;
  51. }
  52. float getSecondFraction() {
  53.     bool isIncorrect;
  54.     int numerator = 0;
  55.     int denominator = 0;
  56.     do {
  57.         isIncorrect = false;
  58.         cout << "Введите числитель второй дроби\n";
  59.         numerator = getException(numerator);
  60.         int numeratorForFindingDivisors = numerator;
  61.         cout << "Введите знаменатель второй дроби\n";
  62.         denominator = getException(denominator);
  63.         int denominatorForFindingDivisors = denominator;
  64.         if (denominator == 0) {
  65.             cout << "Введите знаменатель, не равный 0!\n";
  66.             isIncorrect = true;
  67.         }
  68.         else if (numerator == 0) {
  69.             cout << "Введите числитель, не равный 0!\n";
  70.             isIncorrect = true;
  71.         }
  72.         else while (denominatorForFindingDivisors != 0) {
  73.             if (numeratorForFindingDivisors > denominatorForFindingDivisors)
  74.                 numeratorForFindingDivisors = numeratorForFindingDivisors - denominatorForFindingDivisors;
  75.             else
  76.                 denominatorForFindingDivisors = denominatorForFindingDivisors - numeratorForFindingDivisors;
  77.         }
  78.         if (numeratorForFindingDivisors > 1) {
  79.             cout << "Дробь должна быть несократимой! Попробуйте ещё.\n";
  80.             isIncorrect = true;
  81.         }
  82.     } while (isIncorrect);
  83.     float fraction = (float)numerator / (float)denominator;
  84.     return fraction;
  85. }
  86. float getSumOfFractions(float firstFraction, float secondFraction) {
  87.     float sum = firstFraction + secondFraction;
  88.     return sum;
  89. }
  90. void outputSum(float sum) {
  91.     cout << "Сумма дробей: " << sum;
  92. }
  93. int main(){
  94.     system("chcp 1251");
  95.     system("cls");
  96.     cout << "Программа считает сумму двух обыкновенных несократимых дробей\n";
  97.     float firstFraction = getFirstFraction();
  98.     float secondFraction = getSecondFraction();
  99.     float sum = getSumOfFractions(firstFraction, secondFraction);
  100.     outputSum(sum);
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement