Skip to content

Commit 38c4cdd

Browse files
committed
26: Radix Converter
1 parent 7fff17d commit 38c4cdd

File tree

3 files changed

+45
-14
lines changed

3 files changed

+45
-14
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,19 @@ If you have any questions, you can contact me by email morasiu2@gmail.com
4343
* [23 Image Downloader](#23)
4444
* [24 Sudoku (with resolver)](#24)
4545
* [25 Maze generator (with resolver)](#25)
46+
* [25 Radix Converter](#26)
4647

4748
## Bonuses
4849

4950
1. [Loading animation](#bonus1)
5051

5152
## Progress
5253

53-
25/100
54+
26/100
5455

55-
■■■■■■■■■■■■■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
56+
■■■■■■■■■■■■■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
5657

5758
All - **100** <br>
58-
Done - **25** <br>
5959

6060
* <a name="00">00</a> Name Generator - 29.01.2018 *Done* (`Python 3`) <br>
6161
![00](docs/images/00.png)
@@ -130,6 +130,8 @@ As you see, not really a challenge. Let's move on
130130
* <a name="25">25</a> Maze generator (with resolver using A*) - 14.11.2018 *Done* (`C#`)<br>
131131
![25_1](docs/images/25_1.gif)
132132
![25_2](docs/images/25_2.gif)
133+
* <a name="26">26</a> Radix Converter - 20.11.2018 *Done* (`C#`)<br>
134+
![26](docs/images/26.gif)
133135
## Bonus
134136

135137
* <a name="bonus1">1.</a> Loading animation in console 24.02.2018 *Done* (`C#`) ![Bonus 1](docs/images/bonus1.gif)

challenges/26_Radix_Converter/RadixConverter.cs

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,10 @@ private static void ChooseOption() {
2323
switch (key) {
2424
case ConsoleKey.D1:
2525
isOptionCorrect = true;
26-
var number = GetNumber();
27-
var radix = GetRadix();
28-
var result = ConvertFromDecimal(number, radix);
29-
Console.WriteLine(number + " in " + radix + " is: " + result);
26+
ConvertFromDecimalAndDisplayResult();
3027
break;
3128
case ConsoleKey.D2:
29+
ConvertToDecimalAndDisplayResult();
3230
isOptionCorrect = true;
3331
break;
3432
default:
@@ -38,6 +36,21 @@ private static void ChooseOption() {
3836
} while (!isOptionCorrect);
3937
}
4038

39+
private static void ConvertToDecimalAndDisplayResult() {
40+
Console.Write("\bNumber: ");
41+
var number = Console.ReadLine();
42+
var radix = GetRadix();
43+
var result = ConvertToDecimal(number, radix);
44+
Console.WriteLine(number + " from radix " + radix + " to decimal is equal " + result);
45+
}
46+
47+
private static void ConvertFromDecimalAndDisplayResult() {
48+
var number = GetNumber();
49+
var radix = GetRadix();
50+
var result = ConvertFromDecimal(number, radix);
51+
Console.WriteLine(number + " in " + radix + " is: " + result);
52+
}
53+
4154
private static int GetNumber() {
4255
Console.Write("\bNumber: ");
4356
var input = Console.ReadLine();
@@ -63,7 +76,7 @@ private static int GetRadix() {
6376
private static string ConvertFromDecimal(int number, int radix) {
6477
var result = "";
6578
var inputNumber = number;
66-
var alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
79+
var alphabet = GetAlphabet();
6780

6881
while (inputNumber >= radix) {
6982
var modal = inputNumber % radix;
@@ -81,18 +94,34 @@ private static string ConvertFromDecimal(int number, int radix) {
8194
return string.Concat(result.Reverse());
8295
}
8396

84-
private static int ConvertToDecimal(string number, int radix) {
85-
var result = 0;
86-
var inputNumber = number;
87-
var alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
97+
private static long ConvertToDecimal(string number, int radix) {
98+
var result = new long();
99+
var inputNumber = number.Reverse().ToList();
88100

89-
foreach (var num in inputNumber) {
90-
101+
for (var index = 0; index < inputNumber.Count(); index++) {
102+
result += GetNumberFromChar(inputNumber[index]) * (long) Math.Pow(radix, Convert.ToDouble(index));
91103
}
92104

93105
return result;
94106
}
95107

108+
private static char[] GetAlphabet() {
109+
return Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
110+
}
111+
112+
private static int GetNumberFromChar(char number) {
113+
if (int.TryParse(number.ToString(), out var result)) {
114+
return result;
115+
}
116+
117+
var alphabet = GetAlphabet();
118+
119+
if (!alphabet.Contains(number.ToString().ToUpper()[0])) throw new ArgumentException("Wrong number");
120+
121+
var index = alphabet.ToList().FindIndex(c => c == number.ToString().ToUpper()[0]);
122+
return index + 10;
123+
}
124+
96125
private static void ExitWithError(string s) {
97126
Console.WriteLine(s);
98127
Environment.Exit(1);

docs/images/26.gif

29.1 KB
Loading

0 commit comments

Comments
 (0)