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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2011, 07:40   #1
2008kedr2008
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию Сложение двоичных чисел!!!

возникла проблема при сложение двух двоичных чисел компилятор работает не правильно!!!
помогите найти ошибку

Код:
#ifndef BIN
#define BIN

#include <list>
#include <iostream>

using namespace std;
class Bin{
      public:
             friend istream& operator>>(istream&, Bin&);
             friend ostream& operator<<(ostream&, const Bin&);
             Bin operator+(Bin&);
             Bin operator-(Bin&);
             Bin operator*(Bin&);
             Bin operator/(Bin&);
             Bin operator%(Bin&);
             int operator>(Bin);
             int operator<(Bin);
             int operator==(Bin);
             int operator!=(Bin);
             int check();
             Bin sign();
             private:
             list <unsigned char> n;
             list <unsigned char>::iterator it;
             long Transfer();
             friend void conclusion(Bin);
};
#endif
#include <cstdlib>
#include <iostream>
#include <math.h>
#include "Bin.h"
using namespace std;

Bin Bin:: operator+(Bin& b1){
int t=0;
int i, n1,n2,s;
char f[3];
if(b1.n.size()>n.size()){s=b1.n.size();}  
else{s=n.size();}
 b1.n.resize(s);
for(b1.it=b1.n.begin(), it=n.begin(), i=0; i<s; i++){  
      *f=*b1.it; 
n1=atoi(f);  
  *f=*it; 
 n2=atoi(f);
 n1=n1+n2+t;  
t=0;  
if(n1>1){  
t=n1/2;            
n1=n1%2;
}
_itoa(n1, f, 2);
  *b1.it=*f;
 if(i<b1.n.size()){b1.it++;}  
 else{*b1.it='0';}  
 if(i<n.size()){it++;}
         else{*it='0';}  
}  
  if(t>0){
      _itoa(t, f, 2);
      b1.n.push_back(*f); 
    }
    return b1;
}

Последний раз редактировалось ACE Valery; 11.05.2011 в 14:48.
2008kedr2008 вне форума Ответить с цитированием
Старый 11.05.2011, 07:43   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Компилятор работает не правильно? Это маловероятно. Может стоит поискать ошибку в коде?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 11.05.2011, 08:19   #3
2008kedr2008
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 14
По умолчанию

я не могу её найти!!! если бы знал где она то не писал сюда=)
2008kedr2008 вне форума Ответить с цитированием
Старый 11.05.2011, 12:08   #4
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
По умолчанию

Цитата:
Сообщение от 2008kedr2008 Посмотреть сообщение
я не могу её найти!!! если бы знал где она то не писал сюда=)
Конечно не знаю, может я немного отстал от жизни, но с каких это пор программный код стал писаться в таком виде.
, тут же даже при ОГРОМНОМ желании "без бутылки" не разберешься!? Может быть было бы лучше, если бы сперва научились писать красивый грамотно скомпонованный код?
Тут один ответ может быть:"Применяй отладчик(Debugger)", т.к. по-моему тут ни кто кроме тебя не сможет разобраться!
И еще: если необходимо сложение двоичных чисел, то почему бы вместо типа unsigned char не использовать тип Boolean? По-моему, это было бы более рациональным решением
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.

Последний раз редактировалось ACE Valery; 11.05.2011 в 14:49.
Mixim вне форума Ответить с цитированием
Старый 11.05.2011, 14:57   #5
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Слушаете меня оба два.
Первому, то бишь топикстартеру, то бишь 2008kedr2008: что значит "компилятор работает не правильно"??? Ошибка выходит? Не компилируется прога? Не запускается?
Второму, то бишь товарищу Mixim: предупреждаю пока устно - если вы видите хреново оформленый код, тем более не обрамленный тегом code, не нужно его копировать в свое сообщение. Модерам что, по-вашему, делать нечего, как исправлять вместо одного раза два? Сделали замечание про неоформленный код - и все. Думаю, ТС и так поймет, о каком коде вы говорите. В общем, следующий раз - штраф, однозначно.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать алгоритм деления двоичных десятичных чисел. Lazio Фриланс 1 08.05.2011 02:46
Сложение двоичных чисел в Ассемблере Дмитрий142 Помощь студентам 0 26.04.2011 18:26
генерация псевдослучайных двоичных чисел на С++ IRINA89 Помощь студентам 2 16.05.2010 11:56
сложение 10 двоичных чисел sssvetlaya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 10.11.2009 09:32