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

Шестнадцатиричная система - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать шаблон класса массив с любым методом сортировки http://www.cyberforum.ru/cpp-beginners/thread1211550.html
Создать шаблон класса массив с методом сортировки, отсортировать свой класс “Адрес” по его полям адрес, индекс, но я сделал по другому, и прошу помощи, дабы сделать все по условию, СРОЧНО. #include...
C++ Комментарии к программе привет всем. помогите, пожалуйста, разобраться в работе программы. вот код #include <iostream> #include <ctime> #include <fstream> #include <iomanip> #include <string> using namespace std; ... http://www.cyberforum.ru/cpp-beginners/thread1211549.html
C++ Описание работы программы
помогите, пожалуйста, описать работу программы #include <iostream> using namespace std; unsigned to_seconds(unsigned hours, unsigned minutes, unsigned seconds) { return (hours >= 12 ?...
Обработка массива, считанного из файла; найти ошибку C++
Есть задание: программа считывает из файла массив целых чисел. Найти максимум (max) и минимум (min) среди них, после чего найти среднее арифметическое отрицательных чисел, расположенных между max и...
C++ Удалить все цифры из заданного слова и подсчитать количество изъятий http://www.cyberforum.ru/cpp-beginners/thread1211536.html
Удалить все цифры из заданного слова и подсчитать количество изъятий. будто простое, но вообще не разбираюсь в символах, может кто-то поможет)
C++ Какая разница между аргументами и параметрами? #include <iostream> using namespace std; //объявление функции int mystrlen(char *str); //В скобочках это параметр функции ? int main() { cout << "Длина строки ПРИВЕТ ВСЕМ равна: "; подробнее

Показать сообщение отдельно
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 226

Шестнадцатиричная система - C++

18.06.2014, 20:31. Просмотров 206. Ответов 0
Метки (Все метки)

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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring> 
 
using namespace std;
 
int main()
{ 
    int osn = 16;
    char bvector1[100];
    char bvector2[100];char rezult[100];
        cin >> bvector1 >> bvector2;
    int L1 = strlen(bvector1);
    for(int i = 0; i < L1; i++)
    {
        bvector1[i] -= '0';
    }
    int L2 = strlen(bvector2);
    for(int i = 0; i < L2; i++)
    {
        bvector2[i] -= '0';
    } 
    if (L1 != L2)
    {
        if (L1 > L2)
        {
            for (int i = 0; i < L2; i++)
            bvector2[L1-1-i] = bvector2[L2-1-i];
            memset(bvector2, 0, (L1-L2));
        }
        if (L2 > L1)
        {
            for (int i = 0; i < L1; i++)
            bvector1[L2-1-i] = bvector1[L1-1-i];
            memset(bvector1, 0, (L2-L1));
        }
    }
    int i;char carry, sum;
    int q;
    if (L1 > L2)
    q = L1;
    else q = L2;
    i = q - 1;
    carry = 0;
    int h;
    while (i >= 0)
    {
        sum = ((bvector1[i] >= 'A' && bvector1[i] <= 'F') ? 10 +  bvector1[i]-'A' : (bvector1[i] - '0')) + ((bvector2[i] >= 'A' && bvector2[i] <= 'F') ? 10 +  bvector2[i]-'A' : (bvector2[i] - '0')) + (carry >= 'A' && carry <= 'F') ? 10 + carry-'A' : (carry - '0');
        h = sum/osn;
        if (sum < osn) {rezult[i--] = sum;}
        else rezult[i--] = sum - osn;
        carry = h;
        if (rezult[L1 + i ] > 9)
            rezult[L1 + i ] = 'A' + rezult[L1 + i ] - 10;
        else rezult[L1 + i ] += '0';
    }
    
    rezult[L1 + L2] = '\0';
    for (i = 0; i < q; i++)
    {
        if (rezult[i] > 9)
            rezult[i] = 'A' + rezult[i] - 10;
        else rezult[i] += '0';
    }
    cout << rezult;
    return 0;
    system("Pause");
}
Должна складываеть два шестнадцатиричных числа, выдет всегда 99, помогите исправить

Добавлено через 2 часа 45 минут
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring>      
 
using namespace std;
 
int main()
{   
    int osnovanie = 8;
    char bvector1[100];
    char bvector2[100];
    unsigned char rezult[100];;
        cin >> bvector1 >> bvector2;
    int L1 = strlen(bvector1);
    int L2 = strlen(bvector2);
    if (L1 != L2)
    {
        if (L1 > L2)
        {
            for (int i = 0; i < L2; i++)
                bvector2[L1-1-i] = bvector2[L2-1-i];
            memset(bvector2, 0, (L1-L2));
        }
        if (L2 > L1)
        {
            for (int i = 0; i < L1; i++)
                bvector1[L2-1-i] = bvector1[L1-1-i];
            memset(bvector1, 0, (L2-L1));
        }
    
    }
    int i;
    char carry, sum;
    int q;
    if (L1 > L2)
    q = L1;
        else q = L2;
    i = q - 1;
    carry = 0;
    int h;
    for (int i = 0; i < L1 + L2; i++) rezult[i] = 0;
    while (i >= 0)
    {
        sum = ((bvector1[i] >= 'A' && bvector1[i] <= 'F') ? 10 +  bvector1[i]-'A' : (bvector1[i] - '0')) - ((bvector2[i] >= 'A' && bvector2[i] <= 'F') ? 10 +  bvector2[i]-'A' : (bvector2[i] - '0')) - ((carry >= 'A' && carry <= 'F') ? 10 +  carry -'A' : (carry - '0'));
        h = sum/osnovanie;
        if (sum >= 0) 
        {
            rezult[i--] = sum;
            carry = 0;
        }
        else
        { 
            rezult[i--] = sum + osnovanie;
            carry = 1;
        }
        if (rezult[L1 + i ] > 9)
            rezult[L1 + i ] = 'A' + rezult[L1 + i ] - 10;
        else rezult[L1 + i ] += '0';
    }
    rezult[L1 + L2] = '\0';
    for (int i = 0; i < L1 ; i++)
    {
        if (rezult[i] > 9)
            rezult[i] = 'A' + rezult[i] - 10;
        else rezult[i] += '0';
    }
    cout << rezult;
    system("Pause");
    return 0;
}
Шестнадцатиричная система
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru