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

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

Восстановить пароль Регистрация
 
Kronoz
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 12
27.03.2012, 00:53     Сумма двоичных чисел, представленных массивами #1
Ребят, помогите понять, что не так. Задача просуммировать 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] << ' ';
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2012, 00:53     Сумма двоичных чисел, представленных массивами
Посмотрите здесь:

C++ Массив двоичных чисел
умножение двоичных чисел!!! C++
C++ Сложение двоичных чисел, представленных в bitset
C++ Деление двоичных чисел
C++ Перемножение двоичных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор 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;
}
Миниатюры
Сумма двоичных чисел, представленных массивами  
Kronoz
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 12
27.03.2012, 20:01  [ТС]     Сумма двоичных чисел, представленных массивами #3
-=ЮрА=-, Cпасибо! А возможно просуммировать не строковые, а bool - массивы?
-=ЮрА=-
Заблокирован
Автор FAQ
27.03.2012, 20:32     Сумма двоичных чисел, представленных массивами #4
Kronoz, я просто не захотел вводить int массивы,ведь логика таже будет!Нужно именно с массивами???
Kronoz
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 12
27.03.2012, 21:20  [ТС]     Сумма двоичных чисел, представленных массивами #5
-=ЮрА=-, мне интересно понять, почему в моём алгоритме происходит смена значения суммы на последней итерации. Пока это выше моего понимания.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.03.2012, 21:33     Сумма двоичных чисел, представленных массивами #6
А вот почему
http://liveworkspace.org/code/78e406...c37c9d4d5936e3
Цикл пересмотрите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 22:36     Сумма двоичных чисел, представленных массивами
Еще ссылки по теме:

C++ Сложение двоичных чисел
Работа с одномерными массивами чисел (сумма, произведение, формирование нового массива) C++
C++ Найти сумму ряда чисел, представленных в двоичном коде

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор 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??
Yandex
Объявления
27.03.2012, 22:36     Сумма двоичных чисел, представленных массивами
Ответ Создать тему
Опции темы

Текущее время: 20:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru