C++ :: Aufgabe #362
1 Lösung
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ß
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:
C++ 17
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"; }