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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2013, 11:12   #1
roperd
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 44
Вопрос Наследование

Здравствуйте, просьба помочь с решением задачи:

Организовать класс дробь, содержащий методы вывода дроби в общепринятом виде и функцию приведения дроби к несократимому виду.

Организовать производный класс, содержащий функции вычисления деления и умножения дробей, функцию приведения дроби к несократимому виду.

Есть готовое решение, просьба отписаться по поводу недочетов и ошибок:

Код:
#include <iostream>
#include <windows.h>
#include <stdlib.h>

using namespace std;

inline int Nod(int a, int b){
       	
	    if (a != 0)
	        return Nod(b % a,a);
	    else
	        return b;
   
}

class frac{

private:
 int a,b;
	
public:
	
 frac(int, int);
 frac();
 void Vvod();
 int getA(){return(a);}
 int getB(){return(b);}
 void Print();
 
};

class fraction : public frac{
	

	frac b;
		
	public:
        
		fraction(frac);
		frac Func();
		frac operator*( frac );
	    frac operator/( frac );
	
};


frac :: frac(int a, int b){
	
	
  this->a = a;
  this->b = b;
  	
}

fraction :: fraction(frac b){
	
  this->b = b;	
  
}



frac fraction :: Func(){
    
    int l = b.getA(), k = b.getB();

	int N = Nod(l, k); 
	
	frac c = frac(l / N, k / N);
	
	return(c);
	
}

void frac :: Vvod(){
	
	SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
	
	cout << "Введите числитель: " << endl ;
	cin >> a;
	
	cout<<"Введите знаменатель: " << endl ;
	cin >> b;
	
}

frac :: frac(){
	
	a = b = 1;
}

void frac :: Print(){	

    cout << endl << " " << a << endl;
    cout << "---" << endl;
    cout << " " << b << endl << endl;
} 


frac fraction :: operator*( frac a ){
 
    frac c = frac(a.getA() *  b.getA(), a.getB() *  b.getB());
    
    return (c);
}

frac fraction :: operator/( frac a ){
    
    frac c = frac(a.getA() *  b.getB(), a.getB() *  b.getA());
    
    return (c);
}


 
int main(){ 
     
	frac a, b; 
    
    a.Vvod();
    b.Vvod();
	  
	int M = 1;
	
	SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
	
	
	
	while(M)
	{
	    cout << endl << "Выберите действие: " << endl ;
		cout << endl << " 1 -Умножение дробей " << endl;
		cout << " 2 - Деление дробей " << endl;
		cout << " 3 - Выход " << endl << endl;
		
		cin >> M ;
		cout << endl;
		
		switch(M)
		{
		  case 1: {
		  	
		  	 a.Print();
		     b.Print();

		     fraction d1 = fraction(b);
			 fraction d2 = fraction(d1 * a);
             
             cout << endl << "Результат умножения: " << endl;
             
             (d1 * a).Print();
             cout << " = " << endl;
             d2.Func().Print();
			 
             

		  }break;
		  
		  case 2: {
		  	
		      a.Print();
		      b.Print();

		      fraction d1 = fraction(b);
	          fraction d2 = fraction(d1 / a);
	          
	          cout << endl << "Результат деления: " << endl;
	          
	          (d1 / a).Print();
              cout << " = " << endl;
              d2.Func().Print();
		  
		  }break;
		  
		  case 3: exit(EXIT_SUCCESS); break;
		  
		}
	
   }

system("pause");
}

Последний раз редактировалось roperd; 13.10.2013 в 11:14.
roperd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование(С++) Igogo Помощь студентам 5 20.01.2012 20:07
c++ наследование world12_tk Помощь студентам 1 05.01.2012 03:14
Наследование С++ Vasyl'eva Помощь студентам 0 04.12.2011 19:40
Наследование lolopolosko Помощь студентам 1 21.11.2009 17:17