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

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

Войти
Регистрация
Восстановить пароль
 
Kronoz
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 12
#1

Сумма двоичных чисел, представленных массивами - C++

27.03.2012, 00:53. Просмотров 897. Ответов 6
Метки нет (Все метки)

Ребят, помогите понять, что не так. Задача просуммировать 2 массива двоичных чисел.
На посленей итерации в цикле for почему-то значение суммы на 6 элементе меняется.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    bool  x1[5] = {1, 1, 1, 1, 1};
    bool  x2[5] = {0, 0, 0, 0, 0};
    bool   b[5] = {0}; // переносы
    bool sum[6] = {0};
 
    for (int i = 4; i > -1; --i)
    {
        b[i-1] = ( (x1[i]&&x2[i]) || (x1[i]&&b[i]) || (x2[i]&&b[i]) );
 
        sum[i+1] = x1[i]^x2[i]^b[i];
 
        // Вывод значения 6го элемента массива суммы для проверки:
        cout << sum[5] << ' '; // Почему на посленей итерации Sum[5] становится равно 0??
 
    }
    sum[0] = b[0];
 
    cout << endl << endl;
    cout << ' ' << ' ';
    for (int i = 0; i < 5; ++i) cout <<  b[i] << ' '; cout << endl << ' ' << ' ';
    for (int i = 0; i < 5; ++i) cout << x1[i] << ' '; cout << endl << ' ' << ' ';
    for (int i = 0; i < 5; ++i) cout << x2[i] << ' '; cout << endl;
    for (int i = 0; i < 6; ++i) cout << sum[i] << ' ';
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2012, 00:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сумма двоичных чисел, представленных массивами (C++):

Сложение двоичных чисел, представленных в bitset - C++
Здравствуйте! Мне необходимо узнать, как можно реализовать сложение двоичных чисел, представленных в виде bitset (хотя бы инкремент)....

Работа с одномерными массивами чисел (сумма, произведение, формирование нового массива) - C++
Даны массивы a1, ... , a12 ; b1, ... , b10 . Определить: d_i=\prod_{i=1}^{10}(b_i-1.5)+b_i\sum_{j=1}^{12}a_j

Найти сумму ряда чисел, представленных в двоичном коде - C++
Кто поможет улучшить прогу, чтобы она искала из ряда каких либо знаков числа в двоичном коде, а в конце выводила их суму?Типо имеем:...

Подпрограммы сложения и умножения целых чисел, представленных в системах счисления с любым основанием от 2 до 10 - C++
1. Определить подпрограммы сложения и умножения целых чисел, представленных в системах счисления с любым основанием от 2 до 10. результаты...

Перемножение двоичных чисел - C++
Добрый день!:) Возникла проблема при написании калькулятора для двоичных чисел, точнее, проблемы с умножением. Логику сего процесса вроде...

Деление двоичных чисел - C++
Пожалуйста помогите!! Даны два двоичных числа, они записанны в строки, и это важное условие(без перевода числа в целое)... Необходимо...

6
-=ЮрА=-
Заблокирован
Автор FAQ
27.03.2012, 11:19 #2
Kronoz, посмотри код ниже
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
#include <iostream>
#include <string>
using namespace std;
 
string revStr(string str)
{
    char ch_buf;
    int n = str.length();
    for(int i = 0; i < n/2; i++)
    {
        ch_buf = str[i];
        str[i] = str[n - i - 1];
        str[n - i - 1] = ch_buf;
    }
    return str;
}
 
 
string binSum(string sbin1, string sbin2)
{
    int i, b;
    sbin1 = revStr(sbin1);
    sbin2 = revStr(sbin2);
    string binsum = sbin1.length() < sbin2.length() ? sbin2 : sbin1;
    for(b = (i = 0); i < sbin2.length(); i++)
    {
        if(1 < binsum[i] + sbin2[i] + b)
        {
            b = 1;
            binsum[i] = '0';
        }
        else
        {
            b = 0;
            binsum[i] += sbin2[i] + b;
        }
    }
    if(b == 1)
        binsum += "1";
    binsum = revStr(binsum);
    return binsum;
 
}
 
int main()
{
    string sbin1;
    string sbin2;
    cout<<"Enter binary1 : ";cin>>sbin1;
    cout<<"Enter binary2 : ";cin>>sbin2;
    cout<<"Binary sum    : "<<binSum(sbin1, sbin2)<<endl;
    system("pause");
    return 0;
}
1
Миниатюры
Сумма двоичных чисел, представленных массивами  
Kronoz
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 12
27.03.2012, 20:01  [ТС] #3
-=ЮрА=-, Cпасибо! А возможно просуммировать не строковые, а bool - массивы?
0
-=ЮрА=-
Заблокирован
Автор FAQ
27.03.2012, 20:32 #4
Kronoz, я просто не захотел вводить int массивы,ведь логика таже будет!Нужно именно с массивами???
0
Kronoz
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 12
27.03.2012, 21:20  [ТС] #5
-=ЮрА=-, мне интересно понять, почему в моём алгоритме происходит смена значения суммы на последней итерации. Пока это выше моего понимания.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.03.2012, 21:33 #6
А вот почему
http://liveworkspace.org/code/78e406039c08d62275c37c9d4d5936e3
Цикл пересмотрите
1
-=ЮрА=-
Заблокирован
Автор FAQ
27.03.2012, 22:36 #7
Цитата Сообщение от Kronoz Посмотреть сообщение
мне интересно понять, почему в моём алгоритме происходит смена значения суммы на последней итерации. Пока это выше моего понимания.
- да в циклах у тебя напутано, я сделаю скоро с массивами сравнишь со своим вариантом
Мне вот это всё вообще не нра
Цитата Сообщение от Kronoz Посмотреть сообщение
b[i-1] = ( (x1[i]&&x2[i]) || (x1[i]&&b[i]) || (x2[i]&&b[i]) );
sum[i+1] = x1[i]^x2[i]^b[i];
// Вывод значения 6го элемента массива суммы для проверки:
* * * * cout << sum[5] << ' '; // Почему на посленей итерации Sum[5] становится равно 0??
0
27.03.2012, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 22:36
Привет! Вот еще темы с ответами:

Умножение двоичных чисел - C++
помогите дописать умножение двочных чисел....... четвертый день сижу за программой, скоро сдавать а не получается написать только...

Умножение двоичных чисел - C++
Добрый вечер! Есть такое задание , произвести умножение двоичных чисел со знаком и без, то есть это команды процессора mul, imul. Умножение...

Сложение двоичных чисел - C++
Здравсвуйте! Даны два массива: int a = {1, 0, 0, 1}; // двоичное число 1001 int b = {0, 1, 1, 1}; // двоичное число 0111 ...

Массив двоичных чисел - C++
Подскажите, пожалуйста, как на С задать массив двоичных чисел (двоичный вектор) длиной 64 бит, а затем поделить его на равные левую и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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