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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 15:53   #1
Antej
Пользователь
 
Регистрация: 09.01.2012
Сообщений: 38
Восклицание сделать из дробной части числа double число типа int

вот код функции, который вишел у меня, однако он должным образом не функционирует... (в преобразовании дробной части цикл не разрывается)
Код:
char* doubleToChar (double chislo)
{
//выделяем дробную и целую части
    int cilaChastina = chislo;
    double drobnaChastina = chislo - cilaChastina;

//превращаем дробную часть в целое число (доуножаем на 10 необх. колво.раз)
    if (drobnaChastina)
    {
        int i =  drobnaChastina;
        while (drobnaChastina != i)
        {
            cout << "i = " << i << " drobna chastina = " << drobnaChastina << endl;
            drobnaChastina *= 10;
            i = drobnaChastina;
            if (!(drobnaChastina -(double)i)) break;
        }
    }
    char *text = new char[1000];
    strcpy (text, intToChar(cilaChastina));
    strcat (text, ".");
    strcat (text, intToChar(drobnaChastina));
    strcat (text, '\n');
    return text;
}
Antej вне форума Ответить с цитированием
Старый 14.12.2012, 16:06   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Странный код, но и задача странная.
Чему равно chislo в примере, когда функция "не функционирует"?
Abstraction вне форума Ответить с цитированием
Старый 14.12.2012, 16:09   #3
Antej
Пользователь
 
Регистрация: 09.01.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Странный код, но и задача странная.
Чему равно chislo в примере, когда функция "не функционирует"?
не работает функция при любом chislo кроме 0.123...
копилятор - g++

задача странная, не спорю. идея тоже не моя - преобразование числа типа double в строку. а может я и метод выбрал не удачный.
хотя подобная задача может возникать при разработке како-го либо класса вроде SuperDouble (потипу числ не ограниченного размера)

Последний раз редактировалось Antej; 14.12.2012 в 16:14. Причина: дополнение мысли
Antej вне форума Ответить с цитированием
Старый 14.12.2012, 16:13   #4
Dizelektwo
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 56
По умолчанию

double p1= 0.12;
int vv=(p1)*100;
cout <<"\n\n\n" << vv;

Или (4,15 - 4(это число округленное до минимума))*разряды
Dizelektwo вне форума Ответить с цитированием
Старый 14.12.2012, 16:15   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ну, есть общее правило - не проверять вещественные числа на равенство. Поменяйте условие в цикле на i<1000000, будет у Вас отображение с точностью 6 знаков после запятой, к примеру.
Abstraction вне форума Ответить с цитированием
Старый 14.12.2012, 16:16   #6
Antej
Пользователь
 
Регистрация: 09.01.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Dizelektwo Посмотреть сообщение
double p1= 0.12;
int vv=(p1)*100;
cout <<"\n\n\n" << vv;

Или (4,15 - 4(это число округленное до минимума))*разряды
негодится - несоответствует задаче
Antej вне форума Ответить с цитированием
Старый 14.12.2012, 16:18   #7
Dizelektwo
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Antej Посмотреть сообщение
негодится - несоответствует задаче
полное соответствие согласно условию.
Dizelektwo вне форума Ответить с цитированием
Старый 14.12.2012, 16:22   #8
Antej
Пользователь
 
Регистрация: 09.01.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Antej Посмотреть сообщение
негодится - несоответствует задаче
не могли бы Вы уточнить по какой причине,
в описанном Вами предложении цикл должен принять вид
Код:
while (i < 6) drobnaChastina*=10;
есть еще варианты?
Antej вне форума Ответить с цитированием
Старый 14.12.2012, 16:24   #9
Antej
Пользователь
 
Регистрация: 09.01.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Dizelektwo Посмотреть сообщение
полное соответствие согласно условию.
в приведенном Вами виде - точно не подходит.
Antej вне форума Ответить с цитированием
Старый 14.12.2012, 16:42   #10
Dizelektwo
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 56
По умолчанию

Antej

А мне Вам что ли программу целиком надо написать? Я предложил лаконичный вариант почти без колес. А уловить мысль и посчитать разряды Ваша задача.
Dizelektwo вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать из числа типа real число типа integer? gylayko Помощь студентам 6 15.09.2012 11:41
задача - найти произведение первой цифры целой части и третей цифры дробной части вещественного числа. LAZARUS maks22 Lazarus, Free Pascal, CodeTyphon 2 30.01.2012 19:53
Определение первой цифры дробной части числа Intersap Помощь студентам 2 19.09.2011 00:07