С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Калькулятор в любой системе счисления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шахматы: найти количество путей для попадания в точку n http://www.cyberforum.ru/cpp-beginners/thread1156390.html
Напишите пожалуйста программу,а то сам С++ почти не знаю,а скоро сдавать. Шахматная фигура может двигаться на 1 шаг,на 2 или на 3. найти кол-во возможных путей для попадания в точку n.
C++ Какое математическое объяснение можно дать формуле, используемой в интерполяционном поиске? какое математическое объяснение можно дать формуле, используемой в интерполяционном поиске? как объяснить ее с математической точки зрения? mid = l + ((k - a) * (r - l)) / (a - a); k-ключ... http://www.cyberforum.ru/cpp-beginners/thread1156386.html
Траблы с ресайзингом вектора C++
Я создал вектор моего класса std::vector<CustomClass> myClass; и через цикл заполняю его: Но при ресайзинге вектора, что бы добавить туда еще один элемент класса, у меня почему-то элементы классов,...
C++ Изменение области видимости функции
Здравствуйте, имеется вопрос по наследованию: Пусть имеется некоторый класс A c функцией func class A { ... Public: int func(); ... } И наследуемый от него класс B
C++ Повторный ввод данных без выхода из программы http://www.cyberforum.ru/cpp-beginners/thread1156359.html
Здравствуйте! Вот фрагмент кода: while(w1 != 1, w1 != -1){ // веса w1 cout << "Введите весовой коэффицент синапса w1 1 или -1: "; cin >> w1; if (w1 == 1){ cout << "Возбуждающий...
C++ Структура в классе (из метода увидеть переменную) class Records { public: int Count; struct Param { public: __property unsigned int index = {write = SetIndex, read = Findex}; protected: unsigned int... подробнее

Показать сообщение отдельно
Jewbacabra
Эксперт PHP
2702 / 2290 / 854
Регистрация: 24.04.2014
Сообщений: 6,878
24.04.2014, 22:17
Если я все правильно понял, то вот решение в котором реализовано сложение.
Только учти что это я толком не тестировал, в любом случае его еще нужно доработать, обязательно сделать проверку на значения, которые вводит пользователь.
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
const int MAX_LENGTH = 20;
 
struct Number {
    int base;
    int value[MAX_LENGTH];
};
 
int numeric(char c) {
    if (c >= '0' && c <= '9') return c - '0';
    if (c >= 'a' && c <= 'f') return 10 + c - 'a';
    return -1;
}
 
char symbolic(int i) {
    if (i >= 0 && i <= 9) return '0' + i;
    if (i >= 10 && i <= 15) return 'a' + i - 10;
    return 0;
}
 
Number initNum(int base, const char* val) {
    Number res;
    res.base = base;
    if (base > 0) {
        int len = strlen(val);
        if (len <= MAX_LENGTH){
            int n = MAX_LENGTH - len;
            int i=0;
            for (; i < n; ++i) {
                res.value[i] = 0;
            }
            for (int j=0; i < MAX_LENGTH; ++i) {
                res.value[i] = numeric(val[j++]);
            }
        }
    }
    return res;
}
 
void decodeNum(Number num, char** res) {
    int i=0;
    while (num.value[i] == 0) {
        ++i;
    }
    *res = new char[MAX_LENGTH - i + 1];
    int j=0;
    for (; i < MAX_LENGTH; ++i) {
        (*res)[j++] = symbolic(num.value[i]);
    }
    (*res)[j] = '\0';
}
 
Number operator + (const Number& num1, const Number& num2) {
    Number res;
    res.base = num1.base;
    int a = 0;
    if (num1.base == num2.base) {
        for (int i=MAX_LENGTH-1; i >= 0; --i) {
            int z = num1.value[i] + num2.value[i] + a;
            if (z >= res.base) {
                z %= res.base;
                a = 1;
            } else {
                a = 0;
            }
            res.value[i] = z;
        }
    }
    return res;
}
 
int main() {
    int base;
    cout << "base: ";
    cin >> base;
 
    char* num1 = new char[100];
    cout << "n1 = ";
    cin >> num1;
 
    char* num2 = new char[100];
    cout << "n2 = ";
    cin >> num2;
 
    Number res = initNum(base, num1) + initNum(base, num2);
    char* val;
    decodeNum(res, &val);
    cout << "n1 + n2 = " << val << endl;
 
    delete[] val;
    delete[] num1;
    delete[] num2;
 
    system("pause");
}
Добавлено через 8 минут

Не по теме:

Цитата Сообщение от niikiita Посмотреть сообщение
интересная мысль, но в армию как-то не хочется(
Не так уж там и страшно как на гражданке расказывают

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