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

Сложить два числа в двоичной системе счисления в прямом коде - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ сформировать двумерный массив http://www.cyberforum.ru/cpp-beginners/thread128798.html
сформировать двумерный массив по такому правилу 12345 51234 45123 34512 23451
C++ Памогите прошу на С прогу Памогите написать кусок проги по єтомуу заданию : - создание файла, содержащего записи обрабатываемого архива (массива записей); - добавление записей в архив; - удаление записей из архива; http://www.cyberforum.ru/cpp-beginners/thread128797.html
Сформировать из данной строки новую строку, удалив все кратные символы C++
написать программу на си: дана строка АААВВСС, сформировать из нее новую строку АВС,удалив все кратные элементы. заранее спасибо)
C++ Перевести число из десятичной системы в двоичную
Здравствуйте! Помогите, пожалуйста, решить задачу на С++. Перевести число из десятичной системы в двоичную. Если можно, напишите, пожалуйста, всю программу. Заранее благодарна.
C++ Удаление элемента из массива http://www.cyberforum.ru/cpp-beginners/thread128785.html
Задача на С++ Есть массив, который задается вводом. Есть ключ поиска, по которому соответственно идет удаление массива. Пример: исходный массив: 1 2 1 3 4 1 ключ поиска: 1 Полученный массив: 2 3 4
C++ массив Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов массива A с номерами от K до N. подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,688
13.05.2010, 22:25     Сложить два числа в двоичной системе счисления в прямом коде
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
//Сложить два числа в двоичной системе счисления в прямом коде.
#include <string>
#include <deque>
#include <iostream>
 
bool is_bin_dig(char c)
{
    return '0' <= c && c <= '1';    
}
 
typedef std::deque<char> T_chars;
 
bool has_digit(T_chars d)
{
    return !d.empty() && is_bin_dig(d.back());
}
 
std::string bin_add(std::string s1, std::string s2)
{    
    T_chars  d1(s1.begin(), s1.end());
    T_chars  d2(s2.begin(), s2.end());
    T_chars  res;
    size_t   dig_sum = 0;   
 
    while(has_digit(d1) || has_digit(d2) || dig_sum)
    {        
        if(has_digit(d1))
        {                      
            dig_sum += (d1.back() - '0');
            d1.pop_back();          
        }        
        if(has_digit(d2))
        {                        
            dig_sum += (d2.back() - '0');
            d2.pop_back();          
        }        
        res.push_front(dig_sum % 2 + '0');
        dig_sum = dig_sum / 2;
    }//while
    return std::string(res.begin(), res.end());
}
 
int main()
{
    std::string slag1, slag2;
    for(;;)
    {
        std::cout << "slag1 = ";
        std::cin >> slag1;
        std::cout << "slag2 = ";
        std::cin >> slag2;
        std::cout << "sum = "
                  << bin_add(slag1, slag2)                  
                  << std::endl
                  << std::endl;
    }
    return 0;
}
 
Текущее время: 10:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru