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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2010, 22:41   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию Конструктор копирования

Как исправить ошибку ?
Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Fraction{
        
private:
        int num,den;
public:
        void set(int n, int d){
                num=n; den=d;
                normalize();
        }
 
        }
        Fraction(int n, int d){
                set(n,d);
        }
        Fraction(const Fraction& src){
        cout << "Now executing copy constructor." << endl;
        num=src.num;         // Неописанный идентификатор den , num и src
        den=src.den;                          
}
 
        int get_num(){
                return num;
        }
        int get_den(){
                return den;
        }
        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);
        fract.normalize();
        return fract;
}
        Fraction mult(Fraction other);
private:
        void set(int n, int d);
        void 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 gcf(int a, int b){
                if (a%b==0)
                        return abs(b);
                else
                        return gcf(b, a%b);
        }
        int lcm(int a, int b){
        return (a/gcf(a,b))*b;
}
};
int main(){
        Fraction f1(3,4);
        Fraction f2(f1);
        Fraction f3=f1.add(f2);//
        cout << "The value of f3 is ";
        cout << f3.get_num() << "/";
        cout << f3.get_den() << endl;
        return 0;
}
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Старый 23.05.2010, 22:52   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Я исправил только некоторые ошибки.

Код:
#include <conio.h>
#include <math.h>
#include <iostream.h>

class Fraction{
        
private:
        int num,den;
public:
        void set(int n, int d){
                num=n; den=d;
                normalize();
        }
 
        Fraction(int n, int d){
                set(n,d);
        }
        Fraction(const Fraction& src){
        cout << "Now executing copy constructor." << endl;
        num=src.num;         // Íåîïèñàííûé èäåíòèôèêàòîð den , num è src
        den=src.den;                          
}
 
        int get_num(){
                return num;
        }
        int get_den(){
                return den;
        }
        Fraction add(Fraction other){
        Fraction fract(1,2);
        int lcd=lcm(den,other.den);
        int quot1=lcd/den;
        int quot2=lcd/other.den;
        fract.set(num*quot1,other.num*quot2);
        fract.normalize();
        return fract;
}
        Fraction mult(Fraction other);
private:
        void 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 gcf(int a, int b){
                if (a%b==0)
                        return abs(b);
                else
                        return gcf(b, a%b);
        }
        int lcm(int a, int b){
        return (a/gcf(a,b))*b;
}
};
int main(){
        Fraction f1(3,4);
        Fraction f2(f1);
        Fraction f3=f1.add(f2);//
        cout << "The value of f3 is ";
        cout << f3.get_num() << "/";
        cout << f3.get_den() << endl;
        return 0;
}
profi вне форума Ответить с цитированием
Старый 24.05.2010, 17:39   #3
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

profi Спасибо
Skype: Lotles-XXXX

Последний раз редактировалось Superlotles; 24.05.2010 в 17:44.
Superlotles вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизируем return объекта; конструктор копирования Kn793 Общие вопросы C/C++ 2 24.04.2010 20:26
конструктор An123 Помощь студентам 1 17.01.2010 17:14
классы,конструктор копирования,динамический массив экземпляров.Нужна помощь bylynka Общие вопросы C/C++ 1 30.04.2009 21:56
Конструктор PilGrim Общие вопросы C/C++ 0 16.01.2009 10:21
Конструктор копирования Djaconda Общие вопросы C/C++ 3 11.06.2008 18:54