Найдите глюк в программе - C#
Формулировка задачи:
само задание:
"Получить все сочетания из девяти цифр 0, 1, 2, ..,8 по 4 элемента в каждом. Отсортировать их как десятичные числа по убыванию. (В сочетаниях цифры можно использовать несколько раз, сочетания типа 1234 и 4321 считаются одинаковыми)."
P.S. Как мне сказали тут есть мини глюк. которые немного влияет на программу. кто может подскажите
сама программа:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace foolish_app { class Program { static void Main(string[] args) { int curr_count = 0; int fool_count = 0; bool stop = false; var list = new ArrayList(); for (var i = 1000; i < 8889; i++) { switch (i) { case 1000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 0%"); break; case 2000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 10%"); break; case 3000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 20%"); break; case 4000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 30%"); break; case 5000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 40%"); break; case 5500: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 50%"); break; case 6000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 60%"); break; case 7000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 70%"); break; case 8000: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 80%"); break; case 8500: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 90%"); break; case 8888: Console.Clear(); Console.WriteLine("Ждите..."); Console.WriteLine("Завершено: 100%"); break; } var z = Convert.ToString(i); var z1 = Convert.ToInt32(z.Substring(0, 1)); var z2 = Convert.ToInt32(z.Substring(1, 1)); var z3 = Convert.ToInt32(z.Substring(2, 1)); var z4 = Convert.ToInt32(z.Substring(3, 1)); if (!z.Contains("9")) { int[] curr = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; curr[z1] = curr[z1] + 1; curr[z2] = curr[z2] + 1; curr[z3] = curr[z3] + 1; curr[z4] = curr[z4] + 1; int[] comp = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; foreach (var t in list) { comp[0] = 0; comp[1] = 0; comp[2] = 0; comp[3] = 0; comp[4] = 0; comp[5] = 0; comp[6] = 0; comp[7] = 0; comp[8] = 0; var t1 = Convert.ToInt32(Convert.ToString(t).Substring(0, 1)); comp[t1] = Convert.ToInt32(comp[t1] + 1); var t2 = Convert.ToInt32(Convert.ToString(t).Substring(1, 1)); comp[t2] = Convert.ToInt32(comp[t2] + 1); var t3 = Convert.ToInt32(Convert.ToString(t).Substring(2, 1)); comp[t3] = Convert.ToInt32(comp[t3] + 1); var t4 = Convert.ToInt32(Convert.ToString(t).Substring(3, 1)); comp[t4] = Convert.ToInt32(comp[t4] + 1); stop = false; if ((curr[0] == comp[0]) && (curr[1] == comp[1]) && (curr[2] == comp[2]) && (curr[3] == comp[3]) && (curr[4] == comp[4]) && (curr[5] == comp[5]) && (curr[6] == comp[6]) && (curr[7] == comp[7]) && (curr[8] == comp[8])) { fool_count++; stop = true; break; } } if (!stop) { list.Add(z); curr_count++; } } } foreach (var t in list) { Console.Write(t+" "); } Console.WriteLine(); Console.WriteLine("Чисел удовлетворяющих условию: " + curr_count); Console.WriteLine("Чисел НЕудовлетворяющих условию: " + fool_count); Console.ReadKey(); } } }
up!up!up!
Решение задачи: «Найдите глюк в программе»
textual
Листинг программы
private List<string> Search() { Dictionary<string, bool> dictionary = new Dictionary<string, bool>(); for (byte i = 0; i < 9; i++) for (byte j = 0; j < 9; j++) if (j != i) for (byte k = 0; k < 9; k++) if ((k != i) && (k != j)) for (byte l = 0; l < 9; l++) if ((l != k) && (l != j) && (l != i)) { List<byte> keyList = new List<byte>(new byte[] { i, j, k, l }); keyList.Sort(); byte[] sortKey = keyList.ToArray(); string key = string.Empty; foreach (byte value in sortKey) key += Convert.ToChar(value + 48); dictionary[key] = true; } List<string> keys = new List<string>(); foreach (string key in dictionary.Keys) keys.Add(key); keys.Sort(new Comparison<string>(CompareKey)); return keys; } public int CompareKey(string key1, string key2) { return string.Compare(key2, key1); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д