C# :: Aufgabe #189 :: Lösung #6

9 Lösungen Lösungen öffentlich
#189

Zahlen umwandeln: Binär zu Dezimal

Anfänger - C# von Nachbar - 13.09.2017 um 14:19 Uhr
Schreibe eine Funktion, die Zahlen aus dem Dualsystem in Zahlen des Dezimalsystems umwandelt.

Beispiel:

Binär: 11010
Dezimal: 26
#6
vote_ok
von ulfk (100 Punkte) - 31.05.2018 um 12:00 Uhr
Consolen-Programm mit Eingabeschleife um mehrere Strings nacheinander umwandeln/testen zu können.
Quellcode ausblenden C#-Code
namespace Csharp_189_BinaryDecimalConverter
{
    using System;
    using System.Text.RegularExpressions;

    class Program
    {
        static void Main(string[] args)
        {
            string inputString;
            // loop to enter and check several numbers in a row
            do
            {
                Console.Write("Enter binary number or 'Q' to quit: ");
                inputString = Console.ReadLine();
                if (IsValidBinaryNumber(inputString))
                {
                    var resultInteger = ConvertBinaryToDecimal(inputString);
                    Console.WriteLine($"Binary={inputString}  -->  Decimal={resultInteger}\n");
                }
                else
                {
                    Console.WriteLine("ERROR: Invalid input! \n" +
                                      "   Allowed characters: '0' and '1'\n" +
                                      "   Minimum length: 1 character\n" +  
                                      "   Maximum length: 31 characters\n" + 
                                      "   Example input:  100110\n");
                }
            } while (inputString.ToLower() != "q");
        }

        static int ConvertBinaryToDecimal(string binaryString)
        {
            var result = 0;
            var length = binaryString.Length;
            for(var idx = 0; idx < length; idx++)
            {
                // get digits from right to left and convert them to decimal
                var value = binaryString[length - (idx + 1)] == '1' ? 1 : 0;
                result += value * (1 << idx);
            }

            return result;
        }

        static bool IsValidBinaryNumber(string binaryString)
        {
            return binaryString.Length < 32
                && Regex.IsMatch(binaryString, @"^([01]+)$");
        }
    }
}

Kommentare:

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

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