| Код | /*не могу написать программу для перевода чисел из 11сс в 12сс */ #include <iostream> #include <string> #include <algorithm> #include <cmath>
using std::cin; using std::cout; using std::string;
void to_lower(string& str); bool check_string(const string str, const string& alphabet); size_t convert_to_dec(const string str, const string& alphabet); string convert_to_base(unsigned int dec, const string alphabet); size_t pow_base(size_t b, size_t n);
int main() { const string alphabet("0123456789a");
string line = "A2"; cout << "Enter number: "; std::getline(cin, line); std::getchar(); to_lower(line); cout << "\nLine= " << line << "\n"; if (!check_string(line, alphabet)) { cout << "11 decimal number entered incorrectly"; return -1; }
size_t v = convert_to_dec(line, alphabet);
cout << "\nDec Value = " << v; string str = convert_to_base(v, "0123456789AB");
cout << "\ntwelve Value = " << str; return 0; }
size_t pow_base(size_t base, size_t num) { size_t result = 1; if (num == 0) { return result; } if (num == 1) { return base; } result = base; for (size_t i = 1; i < num; i++) { result *= base; } return result; }
string convert_to_base(unsigned int dec, const string alphabet) { size_t remainder = 0; string str; size_t base = alphabet.size(); while (dec > 0) { remainder = dec % base; dec = dec / base; str.append(1, alphabet.at(remainder)); } std::reverse(str.begin(), str.end()); return str; }
size_t convert_to_dec(const string str, const string& alphabet) { size_t base = alphabet.size(); char ch; size_t found; size_t value = 0; size_t j = 0; for (int i = str.size() - 1; i >= 0; i--) { ch = str.at(i); found = alphabet.find(ch); value = value + found * pow_base(base, j++); }
return value; }
bool check_string(const string str, const string& alphabet) { char ch; size_t found; for (size_t i = 0; i < str.size(); i++) { ch = str.at(i); found = alphabet.find(ch); if (found == string::npos) return false; } return true; }
void to_lower(string& str) { for (size_t i = 0; i < str.size(); i++) { str.at(i) = tolower(str.at(i)); } }
|
|