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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2012, 16:51   #1
Ingar
Новичок
Джуниор
 
Регистрация: 30.07.2012
Сообщений: 1
По умолчанию Сложение дробей

Две недели назад начал изучать С++, столкнулся с задачей на элементарное сложение дробей. Не могу понять как правильно получить от пользователя дробь.
А также есчо глупый вопрос, что нужно в конце дописать что б программа
не закрывалась, а ожидала "any key"
Код:
#include <iostream>
using namespace std;
int main()
{
	{  
setlocale(LC_ALL,"RUS");
	}
	int a,b,c,d,e,f;
	char dummy;
	cout<<"Введите первую дробь"<<endl;
	cin >> a >> dummy >> b;
	cout<<"Введите вторую дробь"<<endl;
	cin >> c >> dummy >> d;
	e=a*d+b*c;
	f=b*d;
	cout<<"сумма равна"<<e<<"/"<<f;
	return 0;
}

Последний раз редактировалось Stilet; 30.07.2012 в 20:15.
Ingar вне форума Ответить с цитированием
Старый 30.07.2012, 19:37   #2
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

Насколько мне известно(могу и ошибаться, сам недавно учу плюсы), если ты ставишь к примеру
Код:
cin >> x >> y >> z
то разделение данных этих переменных должно осуществляться пробелом.
Это во-первых. Во вторых для setlocale необходимо подключать <clocale>
Код лучше помещать в тэг [CODE] так как читаемость в разы больше.
Могу предложить такой вариант.
Код:
#include <iostream>
#include <clocale>	//для setlocale
#include <conio.h>	//для _getch()
using namespace std;
int main()
{
	setlocale(LC_ALL,"RUS");
	int a,b,c,d,e,f;
	cout << "Введите первую дробь:" << endl;
	cout << "Числитель: ";
	cin  >> a;
	cout << "Знаменатель: ";
	cin  >> b;
	cout << "Введите вторую дробь:" << endl;
	cout << "Числитель: ";
	cin  >> c;
	cout << "Знаменатель: ";
	cin  >> d;
	e=a*d+b*c;
	f=b*d;
	cout << "Сумма равна: " << e << "/" << f << endl;
        cout << "Press any key..." << endl;
	_getch();
	return 0;
}
Функция _getch() ждет от пользователя каких либо данных. Есть также функция _getche(), она идентична предыдущей. Различие в том что getch не выводит на экран нажатую пользователем клавишу, а getche выводит.

Если ты хочешь так, как писал ты
Код:
cin >> a >> dummy >> b;
то тут уже надо разделать пробелом. скажем так
Код:
Введите первую дробь: 4 / 4
Плюс над программкой еще поработать надо Так как если ввести первая дробь 4/4 и вторая 4/4 то ответ 32/16. Это верно, но лучше сокращать и выводить сразу 2.

Например перед выводом ответа поставить оператор if
Код:
if(e>=f)
{
	//тут сделать приведение дроби к простой
	//если в этом есть необходимость
}
Я могу, Я хочу, Я буду!

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi Вычисление цепных дробей toperx Помощь студентам 7 07.01.2012 08:31
Не могу разобраться как работает программа(сложение дробей) Superlotles Общие вопросы C/C++ 1 15.05.2010 16:05
Класс Дробей finargot Общие вопросы .NET 6 18.03.2010 23:03
Сумма дробей Xcopy Общие вопросы Delphi 1 05.09.2009 19:12
ВЫчисление дробей по модулю целого числа Камикадзе Помощь студентам 0 18.04.2009 09:29