C# :: Aufgabe #392
3 Lösungen

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:

using System; using System.Collections.Generic; namespace folge_von_einsen_in_string { class Program { static void Main(string[] args) { string b = "01010"; //7 einserfolgen char a = '0'; int zeichenfolge = 0; char[] werte = b.ToCharArray(); //Prüft jedes Item in werte, ob es sich um die Zahl1 handelt, //wenn die Vorgänger zahl allerdings auch eine 1 war, gilt dies nicht als neue Zeichenfolge foreach (var item in werte) { if (item == '1' && item != a) { zeichenfolge++; } a = item; } //Da maximal eine Zeichenfolge enthalten seinen darf, wird dies hier überprüft und ausgegeben if (zeichenfolge <= 1) { Console.WriteLine("Wahr, Maximale Zeichenfolge: {0}", zeichenfolge); } else { Console.WriteLine("Falsch, Maximale Zeichenfolge: {0}", zeichenfolge); } } } }

Console.Write("Binärzahl: "); string b = Console.ReadLine(); Boolean result = b.Contains("11"); Console.WriteLine($"Does string contain specified character? {result}"); Console.ReadLine(); Environment.Exit(0);
NET 5.x; C# 9.x; VS-2019
C#-Code

var s = "0011001"; System.Console.WriteLine(OneSegmentOfOnes(s)); bool OneSegmentOfOnes(string s) => System.Text.RegularExpressions.Regex.Matches(s, "(1)\\1*").Count == 1;