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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
lirkangel
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 13
10.06.2011, 07:37     Дополнительный код с++ #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;
    }
        
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2011, 07:37     Дополнительный код с++
Посмотрите здесь:

Дополнительный источник данных для провайдера OLE DB C++
C++ Как теперь записать в дополнительный столбец?
Дополнительный код C++
C++ Почему появляются дополнительный сиволы в строке?
C++ дополнительный счетчик не считает
Арифметические операции. Дополнительный код C++
C++ Можно ли во время выполнения программы выполнить дополнительный код?
Не понятный дополнительный символ в конце файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2908 / 1337 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.06.2011, 11:52     Дополнительный код с++ #2
OMFG. Монструозно. Видали, конечно, и по-хуже, но даже вчитываясь в код непонятно, что он делает.

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

Не инвертируется, потому что:
C++
1
2
3
4
if (res[i]='1')  // это присваивание, а не сравнение
  res2[i]='0';
else
  res2[i]='1';
Yandex
Объявления
10.06.2011, 11:52     Дополнительный код с++
Ответ Создать тему
Опции темы

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