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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2011, 00:03   #1
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию Разбить дробное на 2 целых числа

Всем доброй ночи.
Подскажите что делаю не так...
передаю число типа double к примеру 3.14
в первую переменную записывается 3, а вот во вторую не 14 а просто 1.
Где я ошибся?
Код:
void CDecimal::SetDouble(double num)
{
	integer=num;
	broken=(num-(int)num)*10;
}
revaldo666 вне форума Ответить с цитированием
Старый 11.06.2011, 00:14   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Какой тип у broken?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 11.06.2011, 00:23   #3
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

int

спасибо за внимание...уже разобрался...нужно было умножать на 100 а не на 10
revaldo666 вне форума Ответить с цитированием
Старый 11.06.2011, 00:25   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

А если нужно N знаков после запятой, то на 10^N)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 11.06.2011, 00:29   #5
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

та я допёр уже...))
Просто после описания 3-х классов голова уже кругом идёт)

А вот как обратно из 2-х переменных типа int перевести в double?

Последний раз редактировалось Stilet; 11.06.2011 в 16:19.
revaldo666 вне форума Ответить с цитированием
Старый 11.06.2011, 00:34   #6
-LeV-
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 29
По умолчанию

integer+(double)broken/100
-LeV- вне форума Ответить с цитированием
Старый 11.06.2011, 00:42   #7
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

спасибо, работает

Подскажите ещё что я не так делаю,
Пытаюсь вернуть две интовых переменных в виде строки.
Написал такой метод...
но он выдаёт чепуху,

Код:
char * CDecimal::GetString()
{
	char * tmp;
	tmp=new char [20];
	itoa(GetInteger(),tmp,10);
	strcat(tmp,".");
	strcat(tmp,itoa(GetBroken(),tmp,10));

	return tmp;
}
если передаю в класс значение 3.14,
то этот метод возвращает 1414

Последний раз редактировалось Stilet; 11.06.2011 в 16:19.
revaldo666 вне форума Ответить с цитированием
Старый 11.06.2011, 12:32   #8
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
strcat(tmp,itoa(GetBroken(),tmp,10));
В tmp записывается значение GetBroken(), а потом оно конкатенируется с самим собой)
Сделайте дополнительные переменные, например так
Код:
char *temp,*result;
temp=new char[20];
result=new char[20];
itoa(GetInteger(),result,10);
strcat(result,".");
itoa(GetBroken(),temp,10);
strcat(result,temp);
delete [] temp;
return result;
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 12.06.2011, 06:30   #9
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Спасибо!
Я сделал так
Код:
char * CDecimal::GetString()
{
	char * tmp;
	tmp=new char [20];
	char t1[10];
	strcat(tmp,itoa(integer,tmp,10));
	strcat(tmp,"\b");
	strcat(tmp,".");
	strcat(tmp,itoa(broken,t1,10));
	
	return tmp;
}
А вот как удалить выделенную память под *tmp?
revaldo666 вне форума Ответить с цитированием
Старый 12.06.2011, 12:53   #10
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Ну внутри этой функции точно удалять не надо, так как temp - возвращаемое значение))
При вызове сохраняем ее и после использования удаляем.
Например, так
Код:
char *X=Y.GetString();
...
delete [] X;
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбить текст по словам и преобразовать в числа Вадос Общие вопросы C/C++ 3 15.02.2011 20:37
Функция, которая сравнивает два целых числа. ~Az@liya~ Помощь студентам 6 15.06.2010 11:09
Pascal В интервале целых чисел найти все числа кратные 7 NewBi Помощь студентам 5 19.03.2010 19:55
TASM - нахождения максимального числа из трех положительных целых чисел и умножения максимального числа iggor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 24.05.2009 20:16
Нужно разбить те числа которые в одной ячейке по разным ячейчам в столбец Alexander_Gr Microsoft Office Excel 8 20.11.2007 08:02