Бесконечный цикл - C# (178145)
Формулировка задачи:
Сделал класс с методами для конвертации из двенадцатеричной системы счисления в двоичную.
Бесконечный цикл возникает после создания экземпляра класса.
Программа заходит в класс, экземпляр которого мы создаём, "выполняет" конструктор и возвращается на первую строчку метода Main();
Сам класс в котором реализована конвертация:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TPO_lab5 { class Program { static void Main(string[] args) { string ab = "123ab"; TwelveToTwo ttt = new TwelveToTwo(ab); ttt.TwelveToTen(); Console.WriteLine(ttt.number10); ttt.TenToTwo(); foreach (int t in ttt.binar) Console.WriteLine(t); Console.ReadLine(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TPO_lab5 { public class TwelveToTwo { public int number12; public int number10; public int number2; public Queue<int> twelves = new Queue<int>(); public Stack<int> binar = new Stack<int>(); public string sn { get { return sn; } set { byte tmp2 = 0; if (value == null) sn = sn; for (int i = 0; i < value.Length; i++) { if (value[i].Equals('0') || value[i].Equals('1') || value[i].Equals('2') || value[i].Equals('3') || value[i].Equals('4') || value[i].Equals('5') || value[i].Equals('6') || value[i].Equals('7') || value[i].Equals('8') || value[i].Equals('9') || value[i].Equals('A') || value[i].Equals('B') || value[i].Equals('a') || value[i].Equals('b')) tmp2 = 0; else tmp2 = 1; } if (tmp2 != 1) sn = value; if (tmp2 == 1) throw new ArgumentException("Недопустимые символы!"); } } public TwelveToTwo(string num) { sn = num; } public Stack<int> TwelveToTwos() { TwelveToTen(); TenToTwo(); return binar; } //Перевод из двенадцатеричной СС в десятичную public void TwelveToTen() { for (int i = 0; i < sn.Length; i++) { if (sn[i].Equals('0') || sn[i].Equals('1') || sn[i].Equals('2') || sn[i].Equals('3') || sn[i].Equals('4') || sn[i].Equals('5') || sn[i].Equals('6') || sn[i].Equals('7') || sn[i].Equals('8') || sn[i].Equals('9')) twelves.Enqueue((int)Char.GetNumericValue(sn[i])); if (sn[i].Equals('A')) twelves.Enqueue(10); if (sn[i].Equals('B')) twelves.Enqueue(11); if (sn[i].Equals('a')) twelves.Enqueue(10); if (sn[i].Equals('b')) twelves.Enqueue(11); } int[] twelvesmas = new int[twelves.Count]; twelves.CopyTo(twelvesmas, 0); int temp = twelvesmas.Length - 1; for (int i = 0; i < twelvesmas.Length; i++) { number10 += twelvesmas[i] * (int)Math.Pow(12, temp); temp--; } } //Перевод из десятичной СС в двоичную public void TenToTwo() { int temp; while (number10 != 1) { temp = number10 % 2; number10 = number10 / 2; binar.Push(temp); } binar.Push(1); string st = string.Join("", binar); } } }
Решение задачи: «Бесконечный цикл»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; namespace TPO_lab5 { public class TwelveToTwo { public Int32 Number12; public Int32 Number10; public Int32 Number2; public Queue<Int32> Twelves = new Queue<Int32>(); public Stack<Int32> Binar = new Stack<Int32>(); private String _sn; public String Sn { get { return _sn; } set { if (value == null) return; foreach (var ch in value) { if (!Char.IsDigit(ch) && !new[] { 'A', 'B', 'a', 'b' }.Any(_ => ch.Equals(_))) { throw new ArgumentException("Недопустимые символы!"); } } _sn = value; } } public TwelveToTwo(String num) { Sn = num; } public Stack<Int32> TwelveToTwos() { TwelveToTen(); TenToTwo(); return Binar; } //Перевод из двенадцатеричной СС в десятичную public void TwelveToTen() { for (var i = 0; i < Sn.Length; i++) { if (Char.IsDigit(Sn[i])) Twelves.Enqueue((Int32)Char.GetNumericValue(Sn[i])); if (Sn[i].Equals('A')) Twelves.Enqueue(10); if (Sn[i].Equals('B')) Twelves.Enqueue(11); if (Sn[i].Equals('a')) Twelves.Enqueue(10); if (Sn[i].Equals('b')) Twelves.Enqueue(11); } var twelvesmas = new Int32[Twelves.Count]; Twelves.CopyTo(twelvesmas, 0); var temp = twelvesmas.Length - 1; for (var i = 0; i < twelvesmas.Length; i++) { Number10 += twelvesmas[i] * (Int32)Math.Pow(12, temp); temp--; } } //Перевод из десятичной СС в двоичную public void TenToTwo() { Int32 temp; while (Number10 != 1) { temp = Number10 % 2; Number10 = Number10 / 2; Binar.Push(temp); } Binar.Push(1); var st = String.Join("", Binar); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д