Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
#1

Непонятная ошибка - C++

29.09.2013, 16:26. Просмотров 287. Ответов 7
Метки нет (Все метки)

Всем привет!
Вообщем вот функция, которая переводит двоичное число в десятичное, + ещё пару кусков кода, чтобы было понятно, что и откуда взялось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int length(int bin_number, int count)
{
    for (int i = 0; bin_number /= 10; ++i )
        count++;
    return count;
}
 
int bin_to_decimal(vector<int> bin_to_dec, int bin_number, int count, int sum_of_bin_to_dec)
{
    for(int i = 0; i < count+1; i++)
    {
       bin_to_dec.push_back((bin_number/((pow(10, count))%10)) * (pow(2, count)));
       count--;
    }
    for(int i = 0; i < bin_to_dec.size(); i++)
       sum_of_bin_to_dec += bin_to_dec[i];
 
       cout << "Binary code: " << bin_number;
       cout << " - in decimal number system is: " << sum_of_bin_to_dec;
       cout << endl << endl;
    return 0;
}
 
int main()
{
    int sum_of_bin_to_dec = 0, bin_number = 1111, count = 0;
    vector <int> bin_to_dec;
    length(bin_number, count);
    return 0;
}
А вот и ошибка, (в 13 строке) которую я не могу разобрать:
error: invalid operands of types '__gnu_cxx::__promote_2<int, int, double, double>::__type {aka double}' and 'int' to binary 'operator%'|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2013, 16:26     Непонятная ошибка
Посмотрите здесь:

Непонятная ошибка C++
C++ Непонятная ошибка
Непонятная ошибка C++
C++ Непонятная ошибка
непонятная ошибка C++
C++ Непонятная ошибка
Непонятная ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
29.09.2013, 16:38     Непонятная ошибка #2
Оператор % определен только для целочисленных типов, а у Вас double. Или приводите к целому типу, или используйте fmod.
castaway
29.09.2013, 16:41
  #3

Не по теме:

По-моему в этой задаче вообще не должны фигурировать числа с плавающей точкой..

Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
29.09.2013, 16:55  [ТС]     Непонятная ошибка #4
Fyret, Не могли бы вы обьяснить, где у меня double?
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
29.09.2013, 17:00     Непонятная ошибка #5
Цитата Сообщение от Leonman Посмотреть сообщение
Не могли бы вы обьяснить, где у меня double?
pow возвращает double.
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
29.09.2013, 17:11  [ТС]     Непонятная ошибка #6
Fyret, А почему тогда с этим куском строчки нет проблем, (pow(2, count))
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
29.09.2013, 17:17     Непонятная ошибка #7
А какие там могут быть проблемы? Проблема в том, что оператор % неприменим к double. Этот оператор у Вас только одном месте используется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2013, 17:17     Непонятная ошибка
Еще ссылки по теме:

непонятная ошибка C++
Непонятная ошибка C++
непонятная ошибка C++
C++ непонятная ошибка
C++ Непонятная ошибка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
29.09.2013, 17:17  [ТС]     Непонятная ошибка #8
А всё, понял.
Yandex
Объявления
29.09.2013, 17:17     Непонятная ошибка
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru