C++ :: Aufgabe #310 :: Lösung #1

1 Lösung Lösung öffentlich
#310

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ß
#1
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;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2318663

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.