Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перевод из одной системы счисления в другую - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как разумно получить доступ к приватной переменной http://www.cyberforum.ru/cpp-beginners/thread801146.html
Есть в классе приватная переменная clientName. Мне нужно защитить ее так, чтобы для внешних классов она была только для чтения. Не получается. Например, следующий код не спасает: Попытка №1 class...
C++ Немогу разобраться, почему выводит каждое число по 20 раз? Ну суть ясна в названии, программировал в Borland C++ for DOS Код: #include <conio.h> #include <stdlib.h> #include <stdio.h> #include <math.h> void main() { clrscr(); http://www.cyberforum.ru/cpp-beginners/thread801128.html
Получить доступ к переменной класса при наличии такого же имени переменной в функции C++
Например, есть приватная переменная clientName в классе. Также есть точно такая же переменная в конструкторе этого класса. И мне нужно присвоить то значение переменной класса, которое имеет эта...
C++ Програмное обеспичение различных ЕОМ
Требуется решить задачу с использованием классов и функций. Вывести ведомость про программное обеспечение различных ЕОМ, которые находятся в институтском вычислительном центре. Какие ЕОМ могут...
C++ быстрая сортировка http://www.cyberforum.ru/cpp-beginners/thread801080.html
Ребят, делаю сортировку четных строк матрицы методом быстрой сортировки. Все сорртируется правильно, но, когда программа доходит до последнего элемента массива, она превращает его в мусор. Никак не...
C++ Многомерный массив(ошибки в коде) Здравствуйте. Необходимо было написать программу: Для матрицы из 3 столбцов и 7 строк определить номера строк где третий элемент больше суммы двух других элементов строки и число таких строк.... подробнее

Показать сообщение отдельно
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231

Перевод из одной системы счисления в другую - C++

05.03.2013, 14:41. Просмотров 1222. Ответов 3
Метки (Все метки)

Проблема с переводом из двоичной системы в десятичную. Допустим у нас есть такое число 11101101 это 237 моя программа хорошо переводит, но если введем 11101110 это 238 моя программа выдает 239. Какую ошибку я допустил?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void binary_to_ten(int binary)
{
    int tmp = binary, sum = 0;
    int number = number_digit(tmp);
    vector<int> binary_code;
    while(tmp != 0)
    {
        binary_code.push_back(tmp%10);
        tmp /= 10;
    }
    reverse(binary_code.begin(),binary_code.end());
    for(int i = 0; i < binary_code.size(); ++i){
        binary_code[i] = my::pow(binary_code[i]*2,number-i-1);
        sum += binary_code[i];
    }
    cout<<sum;
}
Вот весь код:
Кликните здесь для просмотра всего текста
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
 
using namespace std;
 
void ten_to_binary(int);
void binary_to_ten(int);
int number_digit(int);
namespace my{
    int pow(int n,int x)
    {
        if(x == 0) return 1;
        int tmp = n;
        for(int i = 1; i < x; ++i)
            tmp *= n;
        //cout<<tmp<<endl;
        return tmp;
    }
}
 
int main()
{
    cout<<"Enter number: ";
    int digit;
    cin>>digit;
    //ten_to_binary(digit);
    binary_to_ten(digit);
    
    system("pause>0");
    return 0;
}
 
void binary_to_ten(int binary)
{
    int tmp = binary, sum = 0;
    int number = number_digit(tmp);
    vector<int> binary_code;
    while(tmp != 0)
    {
        binary_code.push_back(tmp%10);
        tmp /= 10;
    }
    reverse(binary_code.begin(),binary_code.end());
    for(int i = 0; i < binary_code.size(); ++i){
        binary_code[i] = my::pow(binary_code[i]*2,number-i-1);
        sum += binary_code[i];
    }
    cout<<sum;
}
 
int number_digit(int num)
{
    int tmp = 0;
    while(num != 0)
    {
        num /= 10;
        tmp ++;
    }
    return (tmp);
}
 
void ten_to_binary(int ten)
{
    int tmp = ten,temp;
    vector<int> binary_code;
    while(tmp > 0)
    {
        temp = tmp;
        tmp = tmp / 2;
        binary_code.push_back(temp - (tmp * 2));
 
    }
    reverse(binary_code.begin(),binary_code.end());
    for(int i = 0; i < binary_code.size(); ++i)
        cout<<binary_code[i];
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.