CSharp Numeral Converter - это мой дебютный проект на языке C# и платформе .NET (.NET documentation).
Проект безусловно интересный и полезный, именно в качестве первого 1️⃣ т.к. при работе над ним, я получил опыт, практику работы с базовыми и не очень элементами языка программирования C#, например, почти со всеми типами данных, преобразованием типов, массивами, строками, методами, циклами, условными операторами(неожиданно н 😂🤣) и т.д.
-
Как разделить введённую строку на дробную и целую части:
string[] parts = number.Split('.', ','); wholePart = Convert.ToString(parts[0]); fractionalPart = Convert.ToString(parts[1]);
-
Как работать с буквами систем счисления при переводе в 10-ую СС
int item = (int)num[i]; if (item >= 97 & item <= 122) // работа с таблицей ascii; решает проблему если ввели маленькую букву { item -= 32; } int itemNum; itemNum = item - 48; if (itemNum >= 10) // перевод цифры в букву itemNum -= 7; }
Например символ
'A'
после явного преобразованияint item = (int)num[i];
в типint
будет равняться65
по таблице ascii-
Вычитаем из данного числа 48
-
Если число меньше 10, значит от строки мы "откусили" цифру,
-
Если число больше 10, значит это буква и следует вычесть ещё -7, чтобы получить альтернативный код этой буквы в 10-ой системе счисления.
В данном случае
65 - 48 = 17
, значит это буква, следовательно17 - 7 = 10
-
-
Как работать с буквами систем счисления при переводе из 10-ой СС в другую
item = Convert.ToString((char)(numItem + 55));
- Основан на том же принципе работы с таблицой ascii, что и в примере выше 👆
-
Перевод дробной части числа в 10-ую СС
DecNumber += Convert.ToDouble(arr[i]) * Math.Pow(BaseNumber, n * (-1));
n*(-1)
добавлен для создания отрицательной степени, этого требует алгоритм создания дробной части числа
-
Удаление
0
из строки-результата перевода дробной части числаchar[] MyChar = { '0' }; string newP2 = p2.TrimStart(MyChar);
- Массив
MyChar
содержит в себе символы, которые методTrimStart
принимает и удаляет из начала строки
- Массив
Для реализации данных моментов пришлось обращаться к документации Microsoft (ссылки на документацию: documentation1, documentation2), к форумам 👨💻, к листку бумаги 📄, ручке ✏, кружке с чаем ☕ и думалке 🧠.
Также данный проект интересен с точки зрения “теоретической, научной” информатики т.к. связан с системами счисления (СС).
- Знать что такое система счисления и как строить системы счисления
- Понимать "бумажный" алгоритм перевода (конвертации) чисел между СС
- Знать что такое таблица ascii
- Базовый синтаксис
C#
- Хорошо разбираться в преобразовании типов данных (documentation)
-
Время выполнения (чистое время): 11 часов
-
Сложность:
easy
по задумке и на первый взгляд, но мне хочется датьmedium
(проект оказалься мудрённее, чем я думал именно со стороны реализации наC#
) -
Моя оценка по 5-ти бальной шкале:
⭐⭐⭐⭐⭐
-
Все возможные СС 2-36. Ограничения связаны с всего лишь 10-ю цифрами и английским алфавитом в 26 символов, он просто закончился 😁
-
Реализован перевод дробных чисел
-
Проверки на корректность пользовательского ввода оснований систем счисления
- Проект будет развиваться не бесконечно, но до определённого момента, а именно, приложения под
android
. - Если я смог помочь кому-то этим проектом я рад 😉 т.к. сам помню искал алгоритмы, не находил... эх...