C++ :: Aufgabe #362

1 Lösung Lösung öffentlich

Binärzahl enthält maximal eine Folge von Einsen

Anfänger - C++ von JKooP - 23.04.2021 um 15:37 Uhr
Eine als String (Text) dargestellte Binärzahl (0 und 1) soll dahingehend geprüft werden,
ob sie maximal eine Folge von Einsen enthält. Die Länge der Folge ist beliebig.
Dabei kann die Binärzahl auch vorangestellte Nullen enthalten.

Beispiele:
b = "1100"
Lösung: wahr => 1100 (1 Folge)

b = "1010"
Lösung: falsch => 1010 (2 Folgen)

b = "00111000"
Lösung: wahr => 00111000 (1 Folge)

b = "10000001"
Lösung: falsch => 10000001 (2 Folgen)

Schreibe eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false liefert.

Viel Spaß

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 24.05.2021 um 16:31 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>
#include <string>
#include <vector>
#include <regex>
using namespace std;

bool one_segment_of_ones(string s) {

    vector<string> v;
    regex reg{ "(1)\\1*" };
    sregex_iterator next{ s.begin(), s.end(), reg };
    sregex_iterator end;

    while (next != end) {
        smatch match = *next;
        v.push_back(match.str());
        next++;
    }

    return v.size() == 1;
}

int main()
{
    vector<string> v{ "0011000", "00110001", "01", "10110", "11" };
    for(const auto& s : v)
        cout << s << "-> "<< (one_segment_of_ones(s) ? "wahr" : "falsch") << "\n";
}
1970840

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.