• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

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

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Простой калькулятор рациональных чисел на C++

  • Автор темы Автор темы Oxidous
  • Дата начала Дата начала

Oxidous

Ученик
Регистрация
12 Июл 2011
Сообщения
7
Реакции
2
Баллы
0
Простой калькулятор рациональных чисел на C++

Всем доброго времени суток,
Только начал изучать C++ и задали вот такое задание:

Напишите программу, которая позволяет совершать математические действия (сложение, вычитание, умножение, деление, сравнение) с рациональными числами.
Создайте класс для рациональных чисел.Данные класса - рациональные числа ( числитель и знаменатель). В классе должны быть такие методы: сложение, вычитание, умножение, деление, сравнение (больше, меньше, равно), отрицательное (умножение на -1). Данные методы должны возвращать рациональные числа.
Операция сложения a + b при помощи этого класса будет выглядеть так: a.sloz(b);
Так же в классе обязательно должны быть методы: ввод и вывод.

В общем, нужно написать программу, вида:
Ввожу первое рационально число (допустим, 3/4)
Ввожу второе рациональное число(допустим 16/33)
Выводится результат сложения, вычитания, умножения, деления, сравнения и умножения на -1 введённых рациональных чисел.

С целыми числами никаких проблем нет абсолютно, довольно быстро написал консольную программу,но нужно,чтоб было с рациональными числами. Потому очень прошу помочь.

Вот то,что я написал с целыми числами:

Код:
#include<iostream>
using namespace std;

class MyCalc
{
	private: 
	int a;
	int b;
	
	public: 
	
	void vvod_vivod() 
	{
		cout << "Введите первое число: ";
		cin >> a;
		cout << " " << endl; 
		cout << "Введите второе число: ";
		cin >> b;
		cout << " " << endl;
	}
	void sloz()
	{
		cout << "Сложение " << "(" << a << " + " << b << ")" << " = " << a + b << endl;
	}
	void vicit()
	{
		cout << "Вычитание " << "(" << a << " - " << b << ")" << " = " << a - b << endl;
	}
	void umnoz()
	{
		cout << "Умножение " << "(" << a << " * " << b << ")" << " = " << a * b << endl;
	}
	void delen()
	{
		cout << "Деление " << "(" << a << " / " << b << ")" << " = " << a / b << endl;
	}
	void sravn()
	{
		if (a==b) cout << a << " равно "<< b << endl;  
                if (a<b)   cout << a << " меньше "<< b << endl;  
                if (a>b)   cout << a << " больше "<< b << endl; 
	}
	void otric()
	{
		cout << "Отрицательно: " << "((" << a << " * " << b << ")" << " * -1)"<< " = " << (a * b) * -1 << endl;
	}
};

int main()
{
	setlocale(0, ""); 
	
	cout << "Калькулятор целых чисел.\n" << endl;
	
	MyCalc c1; 
	
	c1.vvod_vivod();
	c1.sloz();
	c1.vicit();
	c1.umnoz();
	c1.delen();
	c1.sravn();
	c1.otric();
	cout << " " << endl;
  
	system("pause"); 
	return 0; 
}
 
А в чем сложность то ? Не умеете с дробями работать ?

Сложение / вычитание - приводим к общему знаменателю , и складываем/вычитаем числитель, если возможно сокращаем полученную дробь

Умножение/деление - ну тут вообще просто - при умножение перемножаем отдельно числители и знаменатели , a/b*c/d = a*c/b*d
деление просто переворачиваем вторую дробь a/b:c/d = a*d/b*c, если возможно сокращаем полученную дробь

Сравнение то же не сложно, приводим к общему знаменателю и сравниваем числитель (только знак числа учесть надо)

Изменить знак это то же самое что умножить на -1/1 (минус одну первую)

Короче элементарная математика, класс 6-7 средней школы по моему ...
 
Благодарю! Ваши мысли натолкнули меня на нужный лад.
Всё сделал как нужно. Благодарю за помощь :)
 
Назад
Сверху