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
2094609

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.