Программу, производящую операцию умножения над операндами являющиеся строковыми представлениями чисел в двоичной форме - C#
Формулировка задачи:
Здрасте! Помогите пожалуйста задачу решить, очень надо, а она сложная для меня слишком
Спасибо!
Написать программу, производящую операцию умножения над операндами являющимися строковыми представлениями чисел в двоичной форме. При решении не использовать преобразования строкового типа в числовой.
Ну вот, а я думала здесь крутые программисты собрались ( Помогите пожалуйста, очень надо!
Решение задачи: «Программу, производящую операцию умножения над операндами являющиеся строковыми представлениями чисел в двоичной форме»
textual
Листинг программы
using System; class TMain { static void Main() { Console.Write("Введите первое двоичное число: "); string s1 = Console.ReadLine(); //Допустим ввели число "110" Console.Write("Введите второе двоичное число: "); string s2 = Console.ReadLine(); //Допустим ввели число "11" /* Выравниваем длину строк добавляя нули слева самой короткой. строка s2, в нашем случае, станет "011" */ while (s1.Length != s2.Length) if (s1.Length > s2.Length) s2 = "0" + s2; else s1 = "0" + s1; int i, j; string[] ForSum = new string[s1.Length]; /* В массив ForSum сохраняем результаты умножения на один из разрядов. В нашем случае это будет: ForSum[0] = "110" ForSum[1] = "110" ForSum[2] = "0" */ for (i = s1.Length - 1; i >= 0; i--) if (s2[i] == '1') ForSum[s1.Length - i - 1] = s1; else ForSum[s1.Length - i - 1] = "0"; /* Теперь сдвинем влево добавляя нули справа, чтобы понять зачем, вспомните умножение столбиком: ForSum[0] = "110" ForSum[1] = "1100" ForSum[2] = "000" */ for (i = 1; i < s1.Length; i++) for (j = 1; j <= i; j++) ForSum[i] += "0"; /* Теперь добавим нули слева, чтобы все строки стали одинаковой длины: ForSum[0] = "00110" ForSum[1] = "01100" ForSum[2] = "00000" */ for (i = 0; i < s1.Length; i++) while (ForSum[i].Length != 2 * s1.Length - 1) ForSum[i] = "0" + ForSum[i]; int Counter = 0; string Result = ""; /* Ну а здесь выполняется сложение всех строк из ForSum */ for (i = ForSum[0].Length - 1; i >= 0; i--) { for (j = 0; j < s1.Length; j++) if (ForSum[j][i] == '1') Counter++; Result = (Counter % 2).ToString() + Result; if(Counter > 0) Counter /= 2; } if(Counter > 0) Result = "1" + Result; Console.WriteLine("Произведение чисел = " + Result); Console.ReadKey(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д