Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- float getException(int number) {
- bool isIncorrect;
- number = 0;
- do{
- cin >> number;
- isIncorrect = false;
- if (cin.fail()){
- cin.clear();
- cin.ignore(1000, '\n');
- cout << "Введите натуральное число!\n";
- isIncorrect = true;
- }
- }while (isIncorrect);
- return number;
- }
- float getFirstFraction() {
- bool isIncorrect;
- int numerator = 0;
- int denominator = 0;
- do {
- isIncorrect = false;
- cout << "Введите числитель первой дроби\n";
- numerator = getException(numerator);
- int numeratorForFindingDivisors = numerator;
- cout << "Введите знаменатель первой дроби\n";
- denominator = getException(denominator);
- int denominatorForFindingDivisors = denominator;
- if (denominator == 0) {
- cout << "Введите знаменатель, не равный 0!\n";
- isIncorrect = true;
- }
- else if (numerator == 0) {
- cout << "Введите числитель, не равный 0!\n";
- isIncorrect = true;
- }
- else while (denominatorForFindingDivisors != 0) {
- if (numeratorForFindingDivisors > denominatorForFindingDivisors)
- numeratorForFindingDivisors = numeratorForFindingDivisors - denominatorForFindingDivisors;
- else
- denominatorForFindingDivisors = denominatorForFindingDivisors - numeratorForFindingDivisors;
- }
- if (numeratorForFindingDivisors > 1) {
- cout << "Дробь должна быть несократимой! Попробуйте ещё.\n";
- isIncorrect = true;
- }
- } while (isIncorrect);
- float fraction = (float)numerator / (float)denominator;
- return fraction;
- }
- float getSecondFraction() {
- bool isIncorrect;
- int numerator = 0;
- int denominator = 0;
- do {
- isIncorrect = false;
- cout << "Введите числитель второй дроби\n";
- numerator = getException(numerator);
- int numeratorForFindingDivisors = numerator;
- cout << "Введите знаменатель второй дроби\n";
- denominator = getException(denominator);
- int denominatorForFindingDivisors = denominator;
- if (denominator == 0) {
- cout << "Введите знаменатель, не равный 0!\n";
- isIncorrect = true;
- }
- else if (numerator == 0) {
- cout << "Введите числитель, не равный 0!\n";
- isIncorrect = true;
- }
- else while (denominatorForFindingDivisors != 0) {
- if (numeratorForFindingDivisors > denominatorForFindingDivisors)
- numeratorForFindingDivisors = numeratorForFindingDivisors - denominatorForFindingDivisors;
- else
- denominatorForFindingDivisors = denominatorForFindingDivisors - numeratorForFindingDivisors;
- }
- if (numeratorForFindingDivisors > 1) {
- cout << "Дробь должна быть несократимой! Попробуйте ещё.\n";
- isIncorrect = true;
- }
- } while (isIncorrect);
- float fraction = (float)numerator / (float)denominator;
- return fraction;
- }
- float getSumOfFractions(float firstFraction, float secondFraction) {
- float sum = firstFraction + secondFraction;
- return sum;
- }
- void outputSum(float sum) {
- cout << "Сумма дробей: " << sum;
- }
- int main(){
- system("chcp 1251");
- system("cls");
- cout << "Программа считает сумму двух обыкновенных несократимых дробей\n";
- float firstFraction = getFirstFraction();
- float secondFraction = getSecondFraction();
- float sum = getSumOfFractions(firstFraction, secondFraction);
- outputSum(sum);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement