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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2010, 13:12   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию Не могу разобраться как работает программа(сложение дробей)

Допустим ввели :
Числитель первой дроби 1
Знаменатель первой дроби 2
Числитель второй дроби 3
Знаменатель второй дроби 4
Код
Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Fraction{
private:
        int num,den;
public:
        void  Fraction::set(int n, int d){
                num = n;
                den = d;
                normalize();
        }
        int Fraction::get_num(){
                return num;
        }
        int Fraction::get_den(){
                return den;
        }
        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);
                cout << "den = " << den << endl; // Почему  здесь 2
                cout << "other den = " << other.den << endl; 
                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;
        }
 
private:
        void Fraction::normalize(){
                if (den==0 || num==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 main(){
        Fraction fract1,fract2,fract3;
        int a,a1,b,b1;
        cout << "Vvedite chislitel pervoy drobi: ";
        cin >> a;
        cout << "Vvedite znamenatel pervoy drobi: ";
        cin >> b;
        cout << "Vvedite chislitel vtoroy drobi: ";
        cin >>a1;
        cout << "Vvedite znamenatel vtoroy drobi: ";
        cin >>b1;
 
                fract1.set(a,b);
                fract2.set(a1,b1);
                fract3=fract1.add(fract2);
                cout << a << "/" << b << " plus " << a1 << "/" << b1 << " = ";
                cout << fract3.get_num() << "/" << fract3.get_den();
                cout << endl;
}
Тут вроде
fract1.set(a,b);// den=2
fract2.set(a1,b1);// Здесь вроде должна затираться den и равняться 4
Skype: Lotles-XXXX

Последний раз редактировалось Superlotles; 15.05.2010 в 16:03.
Superlotles вне форума Ответить с цитированием
Старый 15.05.2010, 16:05   #2
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Все, сам разобрался
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться почему не работает justify F1ernandes HTML и CSS 2 28.01.2010 19:29
text-aling:justify , Не могу разобраться почему не работает F1ernandes HTML и CSS 0 28.01.2010 11:55
Cходящийся ряд (программа по идее должна работать но почему не работает понять не могу) в С++ Vultar Помощь студентам 3 17.12.2009 13:04