Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int a, // числитель 1-й дроби Требуется в ответе указать чему равна 1-я дробь.
- b, // знаменатель 1-й дроби a/b
- c = 3, // числитель 2-й дроби
- d = 7, // знаменатель 2-й дроби
- p, // числитель 3-й дроби
- q; // знаменатель 3-й дроби
- int MaxDenominator(int);
- int checking_the_correct_fraction(int k, int p);
- ////////////////////////////////////////////////////
- int main() //
- {
- int res = MaxDenominator(1000000);
- if(res == 1)
- {
- cout << "The fraction to the left of 3/7 is "<< a <<"/"<< b << endl;
- if(checking_the_correct_fraction(a, b) == 1)
- cout << "Checked and correct." << endl;
- else cout << "Error ! ! !" << endl;
- }
- else cout << "Inadmissibly small denominator. Less than 19"<< endl;
- cin >> c; // Пауза перед завершением программы.
- }
- ////////////////////////////////////////////////////
- int MaxDenominator(int nMaxD) //
- {
- nMaxD -= 12;
- int d = nMaxD % 7;
- nMaxD -= d;
- if(nMaxD < 1) return 0;
- a = (nMaxD * 3)/7 + 5; // Найден числитель ЛЕВОЙ дроби
- b = nMaxD + 12; // Найден знаменатель ЛЕВОЙ дроби
- return 1;
- }
- // 47 - 12 = 35
- // 35 / 7 = 5
- // 5 * 3 = 15 (+ 5) = числитель
- // 5 * 7 = 35 (+12) = знаменатель
- // Возвращает: 0, если дробь неправильная
- // 1, если правильная
- //////////////////////////////////////////////////// k - это числитель
- int checking_the_correct_fraction(int k, int p) // p - знаменатель
- {
- if(k >= p) return 0; // Числитель не меньше знаменателя
- while(p > 0)
- {
- int c = k % p; // Алгоритм Евклида (НОД)
- k = p;
- p = c;
- }
- if(k != 1) return 0; // Есть общий множитель больше 1 (единицы)
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement