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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2010, 19:46   #1
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию Реализация деления вещественных чисел

Добрый вечер, задали реализовать длинную вещественную арифметику использую перегрузку операторов, язык с++.
Реализовала все кроме деления, с ним запуталась, помогите пожалуйста.
Вот определение класса:
Код:
	ifstream in1,in2;	//файловые переменные ввода
	ofstream out;		//файловая переменная вывода
	const int count=200;	//разрядность числа

	class longfloat
	{
		public:
			int chislo[count];	//число
			bool znak;	//знак числа + true, - false
			int por;	//порядок числа
			int len;	//длина числа

			void dopol(longfloat& l1,longfloat& l2);	//дополнение меньшего числа 0
			void swap(longfloat& l1,longfloat& l2);	//обмен чисел
			int cond(longfloat l1,longfloat l2);	//сравнение	0-равны, 1-первое больше, 2-второе больше
			void del(longfloat& l);	//убирание незначащих нулей

			friend istream& operator >>(istream& file, longfloat& a);
			friend ostream& operator <<(ostream& file, longfloat& a);
			friend longfloat operator +(longfloat a,longfloat b);
			friend longfloat operator *(longfloat a,longfloat b);
			friend longfloat operator -(longfloat a,longfloat b);
			friend longfloat operator /(longfloat a,longfloat b);
	};
Вот что пока написала в делении
Код:
longfloat operator / (longfloat a, longfloat b)
{
//=============================================================================================================
//			вычисление знака нового числа
//=============================================================================================================
	bool temp_znak;
	if((a.znak && b.znak)||(!a.znak && !b.znak))
		temp_znak=true;
	else if((!a.znak && b.znak)||(a.znak && !b.znak))
		temp_znak=false;

//=============================================================================================================
//			инициализация нового числа
//=============================================================================================================
	longfloat new_float;
	for(int i=0;i<count-1;i++)
		new_float.chislo[i]=0;
	new_float.len=0;
	new_float.por=0;

//=============================================================================================================
//			деление
//=============================================================================================================
	//действия

	del(new_float);
//=============================================================================================================
//			обновления знака			
//=============================================================================================================
	new_float.znak=temp_znak;
	return(new_float);
}

Пробовала использовать вычитание, но запуталась
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл вещественных чисел. xilnurx Помощь студентам 0 13.03.2010 12:43
Файл вещественных чисел. toybike Общие вопросы C/C++ 8 10.12.2009 20:02
Списки вещественных чисел. в С++ KRT Помощь студентам 2 23.07.2009 13:06
Файл вещественных чисел bullvinkle Общие вопросы C/C++ 1 18.06.2009 01:31