Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2022, 10:53   #1
YaLubluMamu
Пользователь
 
Регистрация: 22.10.2022
Сообщений: 37
По умолчанию C++, реализовать в виде статического члена класса счетчик всех созданных на данный момент в программе экземпляров дробей.

Написать класс Fraction для представления обыкновенных дробей (как отношения
двух целых чисел x/y). Реализовать в виде статического члена класса счетчик всех созданных на данный момент в программе экземпляров дробей.
YaLubluMamu вне форума Ответить с цитированием
Старый 13.12.2022, 10:44   #2
web developer
Пользователь
 
Регистрация: 04.06.2022
Сообщений: 62
По умолчанию

Код:
// L1.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <stdio.h>  
#include <stdlib.h>
#include <iostream>
 
 
using namespace std;
class Fraction 
{
private:
    int num, den; 
    void normalize (); 
    int gcf (int a, int b);
    int lcm (int a, int b);
public:
    void set (int n, int d){num = n; den = d; normalize();}
    int get_num(){return num;}
    int get_den(){return den;}
    Fraction add(Fraction other);
    Fraction mult(Fraction other);
};
 
int main()
{
    Fraction fract1, fract2, fract3 ;
    int X1, Y1, x2 ,y2 ;
    char str [81];
    while (1){
        cout << " Enter numerator: " ;
        cin  >> X1;
        cout << " Enter denominator: " ;
        cin  >> Y1;
        fract1.set(X1,Y1);
        cout <<  "Drob is " << fract1.get_num()<< "/" << fract1.get_den() <<endl;
        cout << " Enter numerator: " ;
        cin  >> x2;
        cout << " Enter denominator: " ;
        cin  >> y2;
        fract2.set(x2,y2);
        cout <<  "Drob is " << fract2.get_num()<< "/" << fract2.get_den()<<endl;    
        fract3 = fract1.add(fract2);
        cout << fract3.get_num()<< "/" <<fract3.get_den();
        cout << " Do again (Y or N)";
        cin  >> str;
        if (!(str[0] == 'Y' || str[1] == 'N'))
            break;
    }
void Fraction::normalize() {
                 
      if (num == 0 || den == 0) {
          num=0;
          den=1;
      }
     
      if (den < 0) {
          num *= -1;
          den *= -1;
      }
 
      int n = gcf(num,den);
      num = num / n;
      den = den / n;
}
 
int Fraction::gcf(int a, int b) {
     if (a % b==0)
        return abs(b);
     else
          return gcf(b, a % b);
}
 
int Fraction::lcm(int a, int b) {
     return (a / gcf(a,b)) * b;
}
 
Fraction Fraction::add(Fraction other) {
            Fraction fract;
            int lcd = lcm(den, other.den);
            int quot1 = lcd/den;
            int quot2 = lcd/other.den;
            fract.set(num * quot1 + other.num * quot2, lcd);
            fract.normalize();
            return fract;
}
 
Fraction Fraction::mult(Fraction other) {
            Fraction fract;
            fract.set(num * other.num, den * other.den);
            fract.normalize();
            return fract;
}
}
web developer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции. Пусть s- множество всех рациональных чисел, представимых в виде несократимых дробей m/n veronika55214 Паскаль, Turbo Pascal, PascalABC.NET 0 17.12.2013 19:09
Создание класса дробей. Пример на сложение двух дробей. Помогите найти ошибку (С++) Сергей.Ш Общие вопросы C/C++ 5 28.10.2013 13:24
Реализовать в виде класса массив натуральных чисел mej Помощь студентам 0 03.05.2012 17:24
Реализовать в виде класса массив натуральных чисел mej Общие вопросы Delphi 2 03.05.2012 15:44
Excel 2007/ А что он делает в данный момент? kzld Microsoft Office Excel 10 30.03.2009 11:14