Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- int val(char c) {
- if (c >= '0' && c <= '9')
- return (int)c - '0';
- else
- return (int)c - 'A' + 10;
- }
- int toDeci(char *str, int base) {
- int len = strlen(str);
- int power = 1;
- int num = 0;
- int i;
- for (i = len - 1; i >= 0; i--) {
- if (val(str[i]) >= base) {
- printf("Invalid Number");
- exit(-1);
- }
- num += val(str[i]) * power;
- power = power * base;
- }
- return num;
- }
- char reVal(int num) {
- if (num >= 0 && num <= 9)
- return (char)(num + '0');
- else
- return (char)(num - 10 + 'A');
- }
- void strev(char *str) {
- int len = strlen(str);
- int i;
- for (i = 0; i < len/2; i++) {
- char temp = str[i];
- str[i] = str[len-i-1];
- str[len-i-1] = temp;
- }
- }
- char* fromDeci(char res[], int base, int inputNum) {
- int index = 0;
- while (inputNum > 0) {
- res[index++] = reVal(inputNum % base);
- inputNum /= base;
- }
- res[index] = '\0';
- strev(res);
- return res;
- }
- int main() {
- cout << "Vvedite chislo: ";
- char num1[256];
- cin >> num1;
- cout << "Vvedite staroe osnovanie: ";
- int num1b;
- cin >> num1b;
- int indec = toDeci(num1, num1b);
- cout << "Vvedite novoe osnovanie: ";
- int num2b;
- cin >> num2b;
- char res[128] = {0};
- char* num2 = fromDeci(res, num2b, indec);
- cout << "Converted: " << num2 << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement