Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 20.05.2013, 20:42   #1
Lawikun
Новичок
Джуниор
 
Регистрация: 20.05.2013
Сообщений: 2
Печаль Не верный си код не знаю что делать

Код:
#include <iostream>
#include <string>

std::string FloatToBin(const double x)
{
std::string ret;
unsigned int z = x;
double r = x-z;

// òóò ïåðåâîäèòñÿ öåëàÿ ÷àñòü
while (z!=0)
{
ret=(char)(z%2+0x30)+ret; 
z=z/2;
}

int counter=0;
//òóò äðîáíàÿ
if (r!=0) ret+=".";
while (r!=0)
{
z=r*2;
ret+=(char)(z+0x30);
r=r*2-z;
++counter;
if (counter==10) // òóò ïîíèìàåì, ïðîöåññ çàòÿíóëñÿ è ÷èñëî ìîæåò áûòü âîîáùå èððàöèîíàëüíî, ïîñòàâèì òî÷êè
{
ret+="...";
break;
}
}
return ret;
}

int main()
{
std::string s;
s = FloatToBin(123.625);
std::cout « s « std::endl;
return 0; }

Тут 3 ошибки не могу понять что делать нужно((((

Последний раз редактировалось Stilet; 21.05.2013 в 22:58.
Lawikun вне форума Ответить с цитированием
Старый 20.05.2013, 21:28   #2
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 5,544
По умолчанию

Во-первых, не си, а с++.
Во-вторых, а мы как должны их найти, да еще и с такими комментариями "òóò ïîíèìàåì, ïðîöåññ çàòÿíóëñÿ è ÷èñëî ìîæåò áûòü âîîáùå èððàöèîíàëüíî, ïîñòàâèì òî÷êè"?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.05.2013, 17:12   #3
Nedward
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 85
По умолчанию

А у меня запустилось, правда после небольшой модернизации. Вот только у меня есть сомнения по поводу правильности расчета дробной части числа, но проверять лень. Вот корректный C++ код.
Код:
#include <iostream>
#include <string>

std::string FloatToBin(const double x)
{
    std::string ret;
    unsigned int z = x; //целая часть
    double r = x-z;     //дробная часть

    while (z!=0)
    {
        ret=(char)(z%2+0x30)+ret;
        z=z/2;
    }

    int counter=0;
    if (r!=0) ret+=".";
    while (r!=0)
    {
        z=r*2;
        ret+=(char)(z+0x30);
        r=r*2-z;
        ++counter;
        if (counter==10)
        {
            ret+="...";
            break;
        }
    }
    return ret;
}

int main()
{
    std::string s;
    s = FloatToBin(2.2);
    std::cout << s << std::endl;
    return 0;
}
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (c) Martin Golding
Nedward вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не знаю что делать! mikolka821 JavaScript, Ajax 2 01.10.2011 22:41
ошибка (не знаю что делать)... retype Помощь студентам 1 16.05.2010 21:26
Не знаю что делать дальше)))) LiptonICE Помощь студентам 1 15.05.2010 13:36
Посмотрите на прогу я не знаю что уже делать(((( Krumyura Общие вопросы C/C++ 1 18.03.2010 23:37


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS