SHARE
TWEET

Untitled

a guest May 23rd, 2019 73 in 3 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. namespace SystemCount_Anastasiya
  4. {
  5.     class Program
  6.     {
  7.         //Функция ChekInput Проврека ввода значения пользователя
  8.         //убираем лишний ввод букв и всякой мешуры
  9.         static String ChekInput(ref bool life, ref bool isMinus)
  10.         {
  11.             string Value = "";
  12.             while (true)
  13.             {
  14.                 ConsoleKeyInfo key = Console.ReadKey(true);
  15.                 switch (key.Key)
  16.                 {
  17.                     case ConsoleKey.Escape: //Вообще выходим из программы
  18.                         life = false;//Меням флаг на лож что бы выйти из основного цикла программы
  19.                         return "0";//Выходим из функции
  20.                     case ConsoleKey.Enter:
  21.                         return Value; //Выходим из функции ввода числа и возвращаем результат ввода
  22.                     default:
  23.                         //Проверка ввода данных от пользователя
  24.                         //Разрешаем ввод ТОЛЬКО цифры от 0-9 так как 10-система счисления
  25.                         if ((key.KeyChar >= '0' && key.KeyChar <= '9') || key.KeyChar == '.')
  26.                         {
  27.                             Value += key.KeyChar;//заносим символ в переменную
  28.                             Console.Write(key.KeyChar);//Показываем на консоли результат
  29.                         }
  30.                         if ((Value.Length == 0 && key.KeyChar == '-'))
  31.                         {
  32.                             isMinus = true;
  33.                             Console.Write(key.KeyChar);//Показываем на консоли результат
  34.                         }
  35.                         break;
  36.                 }
  37.             }
  38.         }
  39.         //Функция Возвращает букву исходя из цифры
  40.         static string GetResutl(int Value, int sys_Code)
  41.         {
  42.             string Result = "";//перемення куда будем закидывать результат
  43.             int value;//временная переменная для подсчета шагов
  44.             while (Value != 0)//пока наше значение не = 0 выполняем цикл
  45.             {
  46.                 value = (byte)(Value % sys_Code);//Берем остаток от sys_Code от указаной системы счисления
  47.  
  48.                 Result += value;//если нет то просто цифру обычную
  49.  
  50.                 Value /= sys_Code;//делим на sys_Code от указаной системы счисления т.е. удаляем 1 блок и дальше идем по циклу заного
  51.             }
  52.  
  53.             char[] temp = Result.ToCharArray();
  54.             Array.Reverse(temp);
  55.             Result = new string(temp);
  56.             return Result;
  57.         }
  58.         static void Main(string[] args)
  59.         {
  60.             bool life = true;
  61.             while (life)//Бесконечный цикл на повтор ввода данных
  62.             {
  63.                 string Result = "";
  64.                 bool isMinus = false;//Проверка на минус
  65.                 Console.WriteLine(new string('-', 25));
  66.                 Console.ForegroundColor = ConsoleColor.White;
  67.                 Console.Write("Введите основание с. сч. [2..16] :> ");
  68.                 string _Code = Console.ReadLine();
  69.                 if (!int.TryParse(_Code, out int sys_Code))
  70.                 {
  71.                     Console.ForegroundColor = ConsoleColor.Red;
  72.                     Console.WriteLine("Неудалось найти число, пожайлуста повторите попытку! ");
  73.                     continue;//начинаем заного
  74.                 }
  75.                 if (sys_Code < 2 || sys_Code > 16)
  76.                 {
  77.                     Console.ForegroundColor = ConsoleColor.Red;
  78.                     Console.WriteLine("Основание сисетмы выходит за пределы [2..16],\nПожайлуста повторите попытку!");
  79.                     continue;//начинаем заного
  80.                 }
  81.                 Console.WriteLine();
  82.                 Console.Write("Введите действительное число\n(либо ESC для выхода) :> ");
  83.                 Console.ForegroundColor = ConsoleColor.Yellow;
  84.                 string Number = ChekInput(ref life, ref isMinus);
  85.                 if (!life) break;//если ESC нажали то выходим из цикла
  86.                 if (isMinus) Result += "-";
  87.  
  88.  
  89.                 //----------------------------- Сами вычисления ---------------------------------------
  90.                 //Разбиваем число
  91.                 string Value, fractionValue;
  92.                 if (Number.Contains('.'))
  93.                 {
  94.                     Value = Number.Substring(0, Number.IndexOf('.'));//ЦЕЛАЯ ЧАСТЬ до .
  95.                     fractionValue = Number.Substring(Number.IndexOf('.') + 1);//ДРОБНАЯ
  96.                     //Вычисляем по частям сначала целую чать потом дробную и конкатинируем
  97.                     Value = GetResutl(int.Parse(Value), sys_Code);
  98.                     fractionValue = GetResutl(int.Parse(fractionValue), sys_Code);
  99.  
  100.                     Result += Value.ToString() + "." + fractionValue.ToString();
  101.                 }
  102.                 else
  103.                 {
  104.                     Result = GetResutl(int.Parse(Number), sys_Code);
  105.                 }
  106.  
  107.                 //сначала целое число
  108.                 Console.WriteLine();
  109.                 Console.ForegroundColor = ConsoleColor.Yellow;//Белый цвет тоже для красоты
  110.                 Console.WriteLine("Результат в {0}-ой системе : {1}", sys_Code, Result);// выводим на экран
  111.             }
  112.         }
  113.     }
  114. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top