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 Exception (7090 Punkte)
- 26.11.2018 um 20:19 Uhr
C#-Code
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