Jak napisałam na FB, pokażę kawałek kodu, który może się przydać początkującym, ale tak zupełnie początkującym, jak uczniowie w szkole średniej, którzy pierwszy raz mają programowanie w szkole. Załóżmy, że dana szkoła poszła z duchem czasu i nie uczy już pascala, ale na przykład takiego c#a. I dzieci dostały zaraz po kalkulatorze w textmode standardowo napisać konwerter liczb dziesiętnych do bin, hex i oct. Dzieci googlują i przeklejają ładnie kod generujący stringi przy użyciu dzielenia przez podstawę, odejmowania, obliczania reszty z dzielenia wiecie tam, zgarniają po piątce i zaczynają naparzać w Counter Strike’a, jak mają w zwyczaju. Tylko znany z kawałów Jasio się wyłamuje. Używa funkcji Convert.ToString. Pani od informatyki (która po poprzedniej lekcji reinstalowała pracownię zainfekowaną groźnym wirusem nazywającym się printscreen+ustaw_jako_tło_pulpitu+ukryj_ikony_pulpitu / =wlasnie_shakowales_windowsa_xp.vir ) skarciła Jasia, że to trzeba było użyć dzielenie całkowite i resztę z dzielenia!!!. Na co Jasiu dumny z siebie dopisał linijkę z użyciem funkcji Math.DivRem, bo program miał to liczyć. Jasiu znowu zrobił coś nie tak, wykazując sie szczególnym zuchwalstwem. Jutro rodzice byli w szkole, bo pani chciała się na niego poskarżyć. Tak czy owak, jako że nasz Jasiu umie lepiej c# od pani z informatyki, na programowanie już chodzić nie musiał. Poniżej przeklejam kod „Jasia”;)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace numerki { class Program { static void Main(string[] args) { int i = Int32.MinValue + Int32.MaxValue; // można to pobrać od usera, wziąć z argsów, jak się chce. Ja podałam na sztywno:) //Zadanie dla dzieci. Napisać "podaj liczbę" i użyć funkcji i = Int32.Parse(Console.ReadLine()); do pobrania jej od usera:p Console.WriteLine("dec: " + i); //tak, wywołanie Convert.ToString załatwia nam całe konwertowanie liczb w celu ich wypisania:) Console.WriteLine("hex z formatowania: " + i.ToString("X")); Console.WriteLine("hex przy podaniu bazy: " + Convert.ToString(i, 16) ); Console.WriteLine("oct: " + Convert.ToString(i, 8)); Console.WriteLine("bin: "+ Convert.ToString(i, 2)); //w 2 stronę Convert.ToInt32( "1010112", 2 ); gdzie 1 to string z liczbą, 2 cyfra to podstawa systemu (base) Console.Write("Rozkład bitów: "); //int[] bittable = Decimal.GetBits(i * 2048); <działa, wypełnia inne:) int[] bittable = Decimal.GetBits(i); const string dataFmt = "{0,10:X8}{1,10:X8}{2,10:X8}{3,10:X8}"; Console.WriteLine( dataFmt, bittable[ 3 ], bittable[ 2 ], bittable[ 1 ], bittable[ 0 ] ); //jeszcze dla smaczku dzielenie z resztą: int a, b, c, d; a = 5; b = 2; c = Math.DivRem(a, b, out d); //out używamy, aby funkcja zwróciła więcej niż jedną wartość;) Console.WriteLine("{0} dzielone przez {1} to {2} reszty {3}", a, b, c, d); Console.ReadKey(); } } }