Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.04.2009, 19:07   #1
Volchara
Пользователь
 
Аватар для Volchara
 
Регистрация: 25.03.2009
Сообщений: 55
Восклицание Сложение в двоичной системе счисления

Итак задача: нужно сложить 2 числа (записанные в массив типа char). Моя функция через раз складывает нормально.
Код:
void plus (char *string1, char *string2, char *result)
{
     int len1 = strlen (string1);
     int len2 = strlen (string2);
     
     int first  = len1 - 1;
     int second = len2 - 1;
     
     int res    = Max (first, second) + 1;
     int memoryRes = res;
     
     char memory = '0';
     
     for (; res >= 0; first --, second --, res --)
     {
           if (memory == '1')
           { 
              if    (string1 [first] == '1' || string2 [second] == '1')
              { 
                 if (string1 [first] == '1' && string2 [second] == '1') result [res] = '1';
                 else                                                   result [res] = '0';
                 memory = '1'; 
              }
              else result [res] = '1'; 
           }
           else
           {
               if   (string1 [first] == '1' || string2 [second] == '1')
               {
                    if (string1 [first] == '1' && string2 [second] == '1') 
                      { 
                          result [res] = '0';
                          memory = '1';
                       }
                    else    result [res] = '1';
               }
               else result [res] = '0';
           }
           
     }
     if (result [0] != '0' && result [0] != '1') { result [0] = '0'; }
     
     int k;
     
     for (k = 0; result [k] == '0' || result [k] == '1'; k++);
     
     result [k] = '\0';
}
объясните кто нибудь плз почему.
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
Volchara вне форума
Старый 23.04.2009, 19:41   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
           ...
           if (memory == '1')
           { 
              if    (string1 [first] == '1' || string2 [second] == '1')
              { 
                 if (string1 [first] == '1' && string2 [second] == '1') result [res] = '1';
                 else                                                   result [res] = '0';
                 memory = '1'; 
              }
              else result [res] = '1'; // Тут memory в ноль не надо сбрасывать?
           }
           ...
pu4koff вне форума
Старый 23.04.2009, 19:54   #3
Volchara
Пользователь
 
Аватар для Volchara
 
Регистрация: 25.03.2009
Сообщений: 55
По умолчанию

pu4koff, спасибо, все заработало!
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
Volchara вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа в двоичной системе Toten Помощь студентам 3 06.03.2009 16:35
Сложение в 23ичной системе счисления Ямагути Общие вопросы C/C++ 6 04.12.2008 21:21
Как записать число в двоичной форме? Stellvertreter Общие вопросы C/C++ 2 16.10.2008 22:35
Деление чисел в двоичной системе счисления Mss_Smith Помощь студентам 9 04.05.2007 17:02