08.02.2007, 06:37
общий
это ответ
Здравствуйте, Krush!
Вот, например, перевод систем исчисления при помощи строк. Код в приложении. Функция
string change_calc_system(const string& number, int base_sys, int dest_sys, const string& digits_set);
принимает число в виде строки const string& number в системе исчисления int base_sys и переводит его в систему int dest_sys. При переводе используется набор символов const string& digits_set.
Приложение:
#include <string>#include <iostream>using namespace std;int _pow(int x, int y) { int result = 1; while(y--) result *= x; return result;}string change_calc_system(const string& number, int base_sys, int dest_sys, const string& digits_set) { int base_pow = (int)number.length(); int dest_pow = 0; string result; int decimal = 0; int index; for(int i=0; i<base_pow; i++) decimal += (int)(digits_set.find_first_of(number[i]))*_pow(base_sys, base_pow-i-1); int temp = decimal; while(decimal >= dest_sys) { dest_pow++; decimal /= dest_sys; } decimal = temp; for(i=0; i<dest_pow; i++) { index = decimal/_pow(dest_sys, dest_pow-i); result.push_back(digits_set[index]); decimal %= _pow(dest_sys, dest_pow-i); } if(decimal != 0) result.push_back(digits_set[decimal]); return result;} int main(int argc, char* argv[]) { string digits_set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"); cout << change_calc_system(string("6DH"), 32, 11, digits_set) << endl; cout << change_calc_system(string("FFE34"), 16, 10, digits_set) << endl; return 0;}