C# :: Aufgabe #231 :: Lösung #2
5 Lösungen
#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ß!
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ß!
#2
von 0 (0 Punkte)
- 26.11.2018 um 20:19 Uhr
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BinaerDoppelteNull_231
{
class Program
{
private static int n;
static void Main(string[] args)
{
Dictionary<int, string> mapping = new Dictionary<int, string>();
try
{
if(args.Length != 1)
{
throw new ArgumentException("Es muss ein Ganzzahl Parameter übergeben werden.");
}
if (!int.TryParse(args[0], out n))
{
throw new Exception("Fehlerhafte Eingabe \"" + args[0] + "\"");
}
if(n < 1)
{
throw new ArgumentException("N muss größer oder gleich 1 sein.");
}
Console.WriteLine("n = {0}", n);
Console.WriteLine("-------------------------");
Console.WriteLine("Liste alle Zahlen auf, die keine zwei Nullen (Binärdarstellung) hintereinander enthalten...");
Console.WriteLine();
mapping = getDecBinMapping();
printValues(mapping);
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.Message);
Console.ResetColor();
}
Console.ReadLine();
}
private static Dictionary<int, string> getDecBinMapping()
{
Dictionary<int, string> mapping = new Dictionary<int, string>();
for (int currentDecimal = 0; currentDecimal < n; currentDecimal++)
{
string binaryValue = Convert.ToString(currentDecimal, 2);
if(!binaryValue.Contains("00"))
{
mapping.Add(currentDecimal, binaryValue);
}
}
return mapping;
}
private static void printValues(Dictionary<int, string> mapping)
{
Console.WriteLine("Dezimal\t\tBinär");
Console.WriteLine("-------------------------");
foreach (KeyValuePair<int, string> pair in mapping)
{
Console.WriteLine("{0}\t\t{1}", pair.Key, pair.Value);
}
Console.WriteLine("-------------------------");
Console.WriteLine("Es wurden von {0} Binärzahlen {1} ohne Doppelnull gefunden.", n, mapping.Count);
}
}
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
