C# :: Aufgabe #392

3 Lösungen Lösungen ö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 dson (640 Punkte) - 01.05.2021 um 10:29 Uhr
Quellcode ausblenden C#-Code
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);
            }
         }
    }
}

1 Kommentar
vote_ok
von AndreM (50 Punkte) - 04.05.2021 um 08:32 Uhr
Quellcode ausblenden C#-Code

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); 





vote_ok
von JKooP (18090 Punkte) - 17.05.2021 um 17:34 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden C#-Code
var s = "0011001";
System.Console.WriteLine(OneSegmentOfOnes(s));

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