Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- int pow(int number, int index) {//Возведение в степень(число, степень)
- int new_number = 1; //новое число
- for (int i = 0; i < index; i++) //проходя по циклу каждый раз умножаем новое число на число
- new_number *= number;
- return new_number;
- }
- void ten(char *num, int base, int size) {//перевод из 10 в остальные(число, система счисления)
- vector<int> new_num;
- for(int i=0; i<size; i++){
- }
- /*while (num) {
- int m = num % base; //делим на систему(получаем остаток)
- new_num.push_back(m); //добавляем остаток
- num /= base; //сдвигаем на одно число
- }*/
- for (int i = new_num.size() - 1; i >= 0; i--) { //разворачиваем
- char digit;
- if (new_num[i] < 10) digit = '0' + new_num[i];//вывод в цифру
- else digit = 'A' + new_num[i] - 10; //вывод в букву
- cout << digit;
- }
- cout << endl;
- }
- void other(char *number, int p, int size)//перевод если основание от 2 до 35(число, система куда надо перевест, длина числа)
- {
- int new_num = 0; //новое число
- bool flag = true; //нет ли лишних чисел
- for (int i = size; i > 0; i--){//идем с конца в начало
- int k = p - 11; //количество букв в числе
- int o = p - 1; //количество цифр в числе
- if ((int)number[size - i] >= 'A' && (int)number[size - i] <= ('A'+k)){//если это буква
- //то переводим ее в число(например А->10) умножаем на систему в степени и прибавляем к тому что было
- new_num += ((int)number[size - i] - 55)*pow(p, i-1);
- }
- else if ((int)number[size-i] >= '0' && (int)number[size-i] <= ('0'+o)){//если это цифра
- //то переводим ее в число(например "0"->0) умножаем на систему в степени и прибавляем к тому что было
- new_num += ((int)number[size-i] - 48)*pow(p, i-1);
- }
- else flag = false;
- }
- if (flag) cout << new_num;
- else cout<< "Incorrect value" << endl << endl;
- }
- int main()
- {
- cout << "Hello, what would you want to do?" << endl;
- cout << "You can change base(n[2:36]):" << endl << "from 10 to n" << endl << "or" << endl << "from n to 10" << endl;
- cout << "Input base number sustem: ";
- int p;
- cin >> p; //получаем исходную систему счисления
- cout << "Input number: ";
- string n; //считываем число
- cin >> n;
- const int size = n.length(); //находим длину числа
- char *char_array = new char[size];
- for (int i = 0; i < size; i++)
- char_array[i] = n[i];
- cout << "Input preferable base system" << endl; //система куда переводим
- int m;
- cin>>m;
- cout << "-----------" << endl;
- if (p == 10)
- ten(char_array, m, size); //10->p
- else if ((p > 1 && p < 10) || (p > 10 && p <= 36))
- other(char_array, p, size); //10->p
- else cout << "I`m sorry, but my creator is kinda silly girl so she has no idea how should it works or even be possible" << endl << endl;
- delete[]char_array;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement