Бесконечный цикл - 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д