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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
lirkangel
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 13
#1

Дополнительный код с++ - C++

10.06.2011, 07:37. Просмотров 1472. Ответов 1
Метки нет (Все метки)

Добрый день, во-первых как убрать неистовые 1..1 в ответе? Я понимаю что это машинный код и таким образом определяется положительный или отрицательный .. но такой ответ мне сказали переделать, есть какие-нибудь идеи?
Во-вторых почему у меня не инвертируется res2?
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
int main() {
    ifstream infile;
    string str1, str2;
    double op1, op2;
    
    infile.open("file.txt", ifstream::in);
    while (infile >> op1, infile >> op2, infile.good()){
        bool flag = 0;
        op1 *= 8;
        op2 *= 8;
        op1 = floor(op1);
        op2 = floor(op2);
        op1 /= 8;
        op2 /= 8;
        int bin_frac_length = 0;
        while (op1 - ceil(op1) != 0.0 || op2 - ceil(op2) != 0.0){
            op1 *= 2;
            op2 *= 2;
            bin_frac_length++;
        }
       
        str1 = str2 = "";
        while (op1 != 0){ 
            str1.push_back((unsigned int)op1%2 + '0'); 
            op1 = (unsigned int)op1 >> 1; 
        } 
        while (op2 != 0){ 
            str2.push_back((unsigned int)op2%2 + '0'); 
            op2 = (unsigned int)op2 >>1; 
        } 
        
        char *res = new char [std::max((str1.length()), str2.length()) + 1];
        char *res2 = new char [std::max((str1.length()), str2.length()) + 1];
        reverse(str1.begin(), str1.end());
        reverse(str2.begin(), str2.end());
        cerr << "first: " << str1.c_str() << " "<<"second: " << str2.c_str() << endl;
        bi_plus(str1.c_str(), str2.c_str(), res);
        if (strlen(res) == sizeof(int) * 8 + 1){
            cout << "result = ";
            for (int i = 1; i < strlen(res); i++){
                cout << res[i];
                if (strlen(res) - bin_frac_length - 1 == i){
                    cout << '.';
                }
                
            }
        } else {
            for (int i = 0; i < strlen(res); i++){
                cout << res[i];
                if (strlen(res) - bin_frac_length - 1 == i){
                    cout << '.';
                }
            }
        }
        char *ol = "1";
        cout<<endl;
        for (int i = 1; i < strlen(res);i++){ 
        if (res[i]='1') res2[i]='0';
        else res2[i]='1';}
        cout<<"result:";
        for (int i = 0; i < strlen(res); i++){cout<<res2[i];}
        bi_plus (res,ol,res2);
        if (strlen(res2) == sizeof(int) * 8 + 2){
            cout << "result2= ";
            for (int i = 1; i < strlen(res); i++){
                cout << res2[i];
                if (strlen(res) - bin_frac_length - 1 == i){
                    cout << '.';
                }
                
            }
        } else {
            for (int i = 0; i < strlen(res2); i++){
                cout << res2[i];
                if (strlen(res) - bin_frac_length - 1 == i){
                    cout << '.';
                }
            }
        }
        cout<<endl;
    }
        
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2011, 07:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дополнительный код с++ (C++):

Дополнительный код - C++
Пишу программу, которая переводит введенное пользователем десятичное число в двоичное. Но возникла проблема с дополнительным кодом, т.е....

Арифметические операции. Дополнительный код - C++
суть проблеммы в следующем. лаба. Операции с числами в доп. коде (доп. код - то каким способом хранятся целые числа на...

Можно ли во время выполнения программы выполнить дополнительный код? - C++
Доброго времени суток кибер люди :) Нужна ваша помощь в плане разъяснения следующих вопросов: 1. Собрал я программу на С++, запустил....

дополнительный счетчик не считает - C++
проблема такая, в коде for(int w = 0; w&lt;cline; w++){ int writv = 0; if(w==writv){ sprintf(&amp;obufer,&quot;%s&quot;,txn.c_str()); }else{ ...

Как теперь записать в дополнительный столбец? - C++
записать в дополнительный столбец значение удвоенного минимального каждой строки матрицы О(6,6). Как теперь записать в дополнительный...

Почему появляются дополнительный сиволы в строке? - C++
Относительно недавно начал изучать C++, дошёл до структур, написал код: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace...

1
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
10.06.2011, 11:52 #2
OMFG. Монструозно. Видали, конечно, и по-хуже, но даже вчитываясь в код непонятно, что он делает.

Цитата Сообщение от lirkangel Посмотреть сообщение
есть какие-нибудь идеи?
Попробуйте переписать код заново, пересмотрев и упростив алгоритм. Найдите где-нибудь (на гугле например) хороший стайл-гайд и восмользуйтесь им. Если не получится, напишите тут задание и подождите, пока кто-нибудь напишет вменяемый код.

Не инвертируется, потому что:
C++
1
2
3
4
if (res[i]='1')  // это присваивание, а не сравнение
  res2[i]='0';
else
  res2[i]='1';
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2011, 11:52
Привет! Вот еще темы с ответами:

Как добавить дополнительный член в структуру? - C++
Здравствуйте в wxDev C++ версия 7.3.1.3 Есть программа в ней структура из 4 элементов(членов), в один элемент созданной структуры...

Не понятный дополнительный символ в конце файла - C++
Друзья помогите пож-та разобраться с проблемой. Ниже простой пример посимвольного считывания из файла # include &lt;fstream&gt; # include...

Дополнительный источник данных для провайдера OLE DB - C++
Подскажите пожалуйста, как лучше организовать дополнительный источник данных в разрабатываемом поставщике данных OLE DB.

Создать дополнительный массив указателей на строки матрицы - C++
Как правильно в массиве указателей p1, каждой ячейкой указывать на каждую строку двумерного массива? int number_of_words = 3; ...


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

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

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