C# :: Aufgabe #231 :: Lösung #4

5 Lösungen Lösungen öffentlich
#231

Binärzahlen ohne Doppelnull

Anfänger - C# von hollst - 20.11.2018 um 09:55 Uhr
Es sein z. B. N = 10.000.

Man schreibe ein Programm, das alle natürlichen Zahlen kleiner N auflistet,
die in ihrer binären Repräsentation keine zwei aufeinander folgende Nullen besitzen.

Anmerkung: Führende Nullen werden nicht berücksichtigt, die erste natürliche Zahl, die nicht in der Liste wäre,
ist somit die 4 (4-dezimal = 100-binär).

Viel Spaß!
#4
vote_ok
von AchtungHuPe (170 Punkte) - 03.01.2019 um 17:38 Uhr
* Anmerkungen:
* 1. Führende Nullen werden nicht berücksichtigt (die erste natürliche Zahl nicht in der Liste ist somit 4 (100)
* 2. N wird auf 2^8 limitiert. Dies ist eine willkürliche Einschränkung der Aufgabenstellung
* 3. Die Zahl 0 wird hier dem Zahlenraum der natürlichen Zahlen zugeschlagen

Quellcode ausblenden C#-Code
using System;

namespace Decimal2Binary
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Gib eine positive Ganzzahl bis 255 ein: ");
            string inputN = Console.ReadLine();

            byte n = 0;
            if (!byte.TryParse(inputN, out n))
            {
                Console.WriteLine("Zahl ungültig oder keine Zahl. Beenden mit beliebiger Taste.");
                Console.ReadKey();
            }
            else
            {
                for (int i = 0; i <= n; i++)
                {
                    string binary = Convert.ToString(i, 2);
                    bool isNullNull = false;

                    for (int j = 1; j < binary.Length; j++)
                    {
                        if (binary.Substring(j, 1) == "0" && binary.Substring(j - 1, 1) == "0")
                        {
                            isNullNull = true;
                            break;
                        }
                    }

                    if (!isNullNull)
                    {
                        Console.WriteLine("{0} hat in seiner Binärrepräsentation ({1}) kein zwei aufeinanderfolgende 0er.", i, binary);
                    }
                }
            }

            Console.WriteLine("\nFertig, beenden mit beliebiger Taste."); Console.ReadKey();
        }
    }
}

Kommentare:

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

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