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

Перевод в 9-чную систему счисления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Квадратная Матрица http://www.cyberforum.ru/cpp-beginners/thread421418.html
Задание написать программу на языке С++, с пояснениями к программному коду Для заданного целого N (0 <= N <= 40) программа должна создавать квадратную матрицу размера N на N такую, что каждый недиагональный элемент матрицы представляет собой сумму индексов элемента (нумерация индексов начинается с единицы), а каждый диагональный элемент - сумму элементов, находящихся с ним в одной строке и одном...
C++ Упорядочить слова в алфавитном порядке на С ребят помогите с задачкой, а то препод озадачил. самому не получается сделать. требуется отсортировать слова в строке в алфавитном порядке. строка заносится в символьный массив. функцию strlen использовать нельзя. массив безразмерный. сортировку требуется занести в отдельную функцию. http://www.cyberforum.ru/cpp-beginners/thread421383.html
C++ Непонятная работа вывода
Почему при выводе переменной а выводится 1, хотя перед тем как вывести ее выполняется lol(а)? Причем, при следующем выводе а выводится правильное значение(2). int lol(int &a) { a++; return 0; } int main()
C++ как дописать в файл
Столкнулся со следующей задачей, не знаю как сделать. В процессе работы кода нужно периодически сохранять массив данных в текстовый файл. Вначале сделал просто - дописывается столбец в конец файл. Но это неудобно. Хочу сделать так, чтобы каждый раз в файл добавлялась колонка из данных. Т.е. например был файл 1 -1 2 -2 3 -3 4 -4 А на следующем шаге дописывается колонка: 1 ...
C++ Дан числовой массив,Дано предложение. http://www.cyberforum.ru/cpp-beginners/thread421340.html
Часть 1. Дан числовой массив. Реализовать алгоритм сортировки вставками. Часть 2. Дано предложение(ввод с клавиатуры). Удалить из неё все буквы «e» и «m»
C++ выводит не все пути #include <stdio.h> #include <conio.h> #include <stdlib.h> int a; int n; int sp,ep; int *was,*pom,*path,cpath; FILE *f1; подробнее

Показать сообщение отдельно
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
05.01.2012, 07:25     Перевод в 9-чную систему счисления
........................
Добавлено через 5 часов 50 минут
Вобщем доработал конвертацию.
Из 9СС отрицательные и положительные целые числа переводятся в десятичную и обратно.
Текущая версия:
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#include <iostream>
using std::cout;
 
#include <cstring>
using std::string;
 
#include <cmath>
 
int toDec(string); //convert to dec
string toN(int);   //convert from dec positive numbers to 9-system.
string toMinusN(int); //convert from dec negative numbers to 9-system.
string calcul(int); //perform calculation
 
int main() {
 
    int inDec;
 
    cout << "24 + 5A = ";
    inDec = toDec("24") + toDec("5A");
    cout << calcul(inDec) << "\n";
 
    cout << "B5 + 61 = ";
    inDec = (toDec("B5") + toDec("61"));
    cout << calcul(inDec) << "\n";
 
    cout << "52 * A6 = ";
    inDec = (toDec("52") * toDec("A6"));
    cout << calcul(inDec) << "\n";
 
    cout << "312 * 41B= ";
    inDec = (toDec("312") + toDec("41B"));
    cout << calcul(inDec) << "\n";
 
    cout << "A1A * B2B = ";
    inDec = (toDec("A1A") * toDec("B2B"));
    cout << calcul(inDec) << "\n";
 
    return 0;
}
 
string calcul(int inDec) {
    if (inDec < 0) {
        return toMinusN(inDec);
    }
    return toN(inDec);
 
}
 
//convert to dec
int toDec(string number) {
    int result = 0;
    int numberSize;
 
    numberSize = number.size();
    for (int i = 0; i < numberSize; ++i) {
        if (number.at(i) == 'A') {
            result += -1 * pow(9, numberSize - 1 - i);
        } else if (number.at(i) == 'B') {
            result += -2 * pow(9, numberSize - 1 - i);
        } else {
            result = result + (pow(9, numberSize - 1 - i) * (number.at(i) - 48));
        }
    }
    return result;
}
 
//convert ppositiv numbers from dec
string toN(int number) {
    char digits[3] = { 'B', 'A', '0' };
    string result;
    size_t resultSize;
    char buf;
 
    while (number > 0) {
        result += number % 9 + '0';
        number /= 9;
    }
 
    resultSize = result.size();
 
    for (size_t i = 0; i < resultSize; ++i) {
        if ((int(result.at(i)) - 48) > 6) {
            if (i + 1 == resultSize) {
                result += "0";
            }
            if (result.at(i + 1) == 'A') {
                result.at(i + 1) = '0';
            } else if (result.at(i + 1) == 'B') {
                result.at(i + 1) = 'A';
            } else {
                result.at(i + 1) = ((int(result.at(i + 1)) - 48) + 1) + '0';
            }
            result.at(i) = digits[(int(result.at(i)) - 48) - 6 - 1];
        }
    }
 
    resultSize = result.size();
 
    for (size_t i = 0; i < resultSize / 2; ++i) {
        buf = result.at(i);
        result.at(i) = result.at((resultSize - 1) - i);
        result.at((resultSize - 1) - i) = buf;
    }
    return result;
}
 
//convert negative numbers from dec
string toMinusN(int number) {
    string result, buf;
    size_t resultSize;
    bool shift = false;
    number *= -1;
 
    if (number == 0) {
        result = '0';
    } else {
        while (number > 0) {
            result += number % 9 + '0';
            number /= 9;
        }
 
        resultSize = result.size();
 
        for (size_t i = 0; i < resultSize; ++i) {
            if ((int(result.at(i)) - 48) == 2 && shift == false) {
                buf += 'B';
            } else if ((int(result.at(i)) - 48) == 2 && shift == true) {
                buf += "6";
                shift = true;
            } else {
                if ((int(result.at(i)) - 48) == 1) {
                    if (shift == true) {
                        buf += 'B';
                        shift = false;
                    } else {
                        buf += 'A';
                    }
                } else {
                    if ((int(result.at(i)) - 48) == 0) {
                        if (shift == true) {
                            buf += 'A';
                            shift = false;
                        } else {
                            buf += '0';
                        }
                    } else {
                        if (shift == true) {
                            buf += (8 - ((int(result.at(i)) - 48))) + '0';
                        } else {
                            buf += (9 - ((int(result.at(i)) - 48))) + '0';
                            shift = true;
                        }
                    }
                }
            }
        }
        if (shift == true) {
            buf += 'A';
            shift = false;
        }
 
        resultSize = buf.size();
        result.clear();
 
        for (size_t i = 0; i < resultSize; ++i) {
            result += buf.at(resultSize - 1 - i);
        }
    }
    return result;
 
}
по большому счету теперь можно вообще любые операция выполнять.

ВЫВОД ПРИМЕРОВ ЗАДАЧИ

24 + 5A = 1B3
B5 + 61 = 46
52 * A6 = B23
312 * 41B= 1B20
A1A * B2B = 15552


ТЕСТЫ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ

-1 A -10 AA
-2 B -20 BB
-3 A6 -30 A56
-4 A5 -40 A45
-5 A4 -50 A34
-6 A3 -60 A23
-7 A2 -70 A12
-8 A1 -80 A01
-9 A0 -90 AA0
-10 AA -100 ABA
-11 AB -110 B6B
-12 B6 -120 B46
-13 B5 -130 B35
-14 B4 -140 B24
-15 B3 -150 B13
-16 B2 -160 B02
-17 B1 -170 BA1
-18 B0 -180 BB0
-19 BA -190 A66A
-20 BB -200 A65B
-21 A66 -210 A636
-22 A65 -220 A625
-23 A64 -230 A614
-24 A63 -240 A603
-25 A62 -250 A6A2
-26 A61 -260 A6B1
-27 A60 -270 A560
-28 A6A -280 A55A
-29 A6B -290 A54B
-30 A56 -300 A526
-31 A55 -310 A515
-32 A54 -320 A504
-33 A53 -330 A5A3
-34 A52 -340 A5B2
-35 A51 -350 A461
-36 A50 -360 A450
-37 A5A -370 A44A
-38 A5B -380 A43B
-39 A46 -390 A416
-40 A45 -400 A405
-41 A44 -410 A4A4
-42 A43 -420 A4B3
-43 A42 -430 A362
-44 A41 -440 A351
-45 A40 -450 A340
-46 A4A -460 A33A
-47 A4B -470 A32B
-48 A36 -480 A306
-49 A35 -490 A3A5
-50 A34 -500 A3B4
-51 A33 -510 A263
-52 A32 -520 A252
-53 A31 -530 A241
-54 A30 -540 A230
-55 A3A -550 A22A
-56 A3B -560 A21B
-57 A26 -570 A2A6
-58 A25 -580 A2B5
-59 A24 -590 A164
-60 A23 -600 A153
-61 A22 -610 A142
-62 A21 -620 A131
-63 A20 -630 A120
-64 A2A -640 A11A
-65 A2B -650 A10B
-66 A16 -660 A1B6
-67 A15 -670 A065
-68 A14 -680 A054
-69 A13 -690 A043
-70 A12 -700 A032
-71 A11 -710 A021
-72 A10 -720 A010
-73 A1A -730 A00A
-74 A1B -740 A0AB
-75 A06 -750 AA66
-76 A05 -760 AA55
-77 A04 -770 AA44
-78 A03 -780 AA33
-79 A02 -790 AA22
-80 A01 -800 AA11
-81 A00 -810 AA00
-82 A0A -820 AAAA
-83 A0B -830 AABB
-84 AA6 -840 AB56
-85 AA5 -850 AB45
-86 AA4 -860 AB34
-87 AA3 -870 AB23
-88 AA2 -880 AB12
-89 AA1 -890 AB01
-90 AA0 -900 ABA0
-91 AAA -910 ABBA
-92 AAB -920 B66B
-93 AB6 -930 B646
-94 AB5 -940 B635
-95 AB4 -950 B624
-96 AB3 -960 B613
-97 AB2 -970 B602
-98 AB1 -980 B6A1
-99 AB0 -990 B6B0
-100 ABA -1000 B56A

ТЕСТЫ ПОЛОЖИТЕЛЬНЫХ ЧИСЕЛ

1 1 _____ 10 11
2 2 _____ 20 22
3 3 _____ 30 33
4 4 _____ 40 44
5 5 _____ 50 55
6 6 _____ 60 66
7 1B _____ 70 1AB
8 1A _____ 80 10A
9 10 _____ 90 110
10 11 _____ 100 121
11 12 _____ 110 132
12 13 _____ 120 143
13 14 _____ 130 154
14 15 _____ 140 165
15 16 _____ 150 2B6
16 2B _____ 160 20B
17 2A _____ 170 21A
18 20 _____ 180 220
19 21 _____ 190 231
20 22 _____ 200 242
21 23 _____ 210 253
22 24 _____ 220 264
23 25 _____ 230 3B5
24 26 _____ 240 3A6
25 3B _____ 250 31B
26 3A _____ 260 32A
27 30 _____ 270 330
28 31 _____ 280 341
29 32 _____ 290 352
30 33 _____ 300 363
31 34 _____ 310 4B4
32 35 _____ 320 4A5
33 36 _____ 330 406
34 4B _____ 340 42B
35 4A _____ 350 43A
36 40 _____ 360 440
37 41 _____ 370 451
38 42 _____ 380 462
39 43 _____ 390 5B3
40 44 _____ 400 5A4
41 45 _____ 410 505
42 46 _____ 420 516
43 5B _____ 430 53B
44 5A _____ 440 54A
45 50 _____ 450 550
46 51 _____ 460 561
47 52 _____ 470 6B2
48 53 _____ 480 6A3
49 54 _____ 490 604
50 55 _____ 500 615
51 56 _____ 510 626
52 6B _____ 520 64B
53 6A _____ 530 65A
54 60 _____ 540 660
55 61 _____ 550 1BB1
56 62 _____ 560 1BA2
57 63 _____ 570 1B03
58 64 _____ 580 1B14
59 65 _____ 590 1B25
60 66 _____ 600 1B36
61 1BB _____ 610 1B5B
62 1BA _____ 620 1B6A
63 1B0 _____ 630 1AB0
64 1B1 _____ 640 1AA1
65 1B2 _____ 650 1A02
66 1B3 _____ 660 1A13
67 1B4 _____ 670 1A24
68 1B5 _____ 680 1A35
69 1B6 _____ 690 1A46
70 1AB _____ 700 1A6B
71 1AA _____ 710 10BA
72 1A0 _____ 720 10A0
73 1A1 _____ 730 1001
74 1A2 _____ 740 1012
75 1A3 _____ 750 1023
76 1A4 _____ 760 1034
77 1A5 _____ 770 1045
78 1A6 _____ 780 1056
79 10B _____ 790 11BB
80 10A _____ 800 11AA
81 100 _____ 810 1100
82 101 _____ 820 1111
83 102 _____ 830 1122
84 103 _____ 840 1133
85 104 _____ 850 1144
86 105 _____ 860 1155
87 106 _____ 870 1166
88 11B _____ 880 12AB
89 11A _____ 890 120A
90 110 _____ 900 1210
91 111 _____ 910 1221
92 112 _____ 920 1232
93 113 _____ 930 1243
94 114 _____ 940 1254
95 115 _____ 950 1265
96 116 _____ 960 13B6
97 12B _____ 970 130B
98 12A _____ 980 131A
99 120 _____ 990 1320
100 121 _____ 1000 1331

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