C++ :: Aufgabe #310

1 Lösung Lösung öffentlich

Zahlensysteme konvertieren

Anfänger - C++ von JKooP - 01.11.2020 um 10:53 Uhr
Schreibe eine Methode/Funktion, mit der man jede als Datentyp „String“ angegeben Zahl eines beliebigen Zahlensystems (binär, ternär, oktal, hexadezimal…) ins Dezimalsystem konvertieren kann.

Beispiele:

("1010", 2) binär --> 10 dezimal
("120", 3) ternär --> 15 dezimal
("15", 8) oktal --> 13 dezimal
("FF", 16) hexadezimal --> 255 dezimal

Viel Spaß

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 06.01.2021 um 17:23 Uhr
C++ 11
Quellcode ausblenden C-Code
#include <iostream>
#include <string>
#include <vector>
#include <tuple>
using namespace std;

int baseX_to_dec(string, int);

int main()
{
    vector<tuple<string, int>> v{ { "1010", 2 }, { "120", 3 }, { "55", 5 }, { "15", 8 }, { "100", 10 }, { "FF", 16 } };

    for (const auto& i : v)
        cout << "(" << get<0>(i) << ", " << get<1>(i) << ") -> " << baseX_to_dec(get<0>(i), get<1>(i)) << endl;
}

int baseX_to_dec(string s, int b)
{
    auto r = 0;
    for (const auto& i : s) {
        char c = tolower(i);
        r = b * r + c - ((c >= 'a' && c <= 'f') ? 87 : 48);
    }
    return r;
}