Skip to content

Commit 7fff17d

Browse files
committed
26: Almost working radix
1 parent e39dc00 commit 7fff17d

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
using System;
2+
using System.Linq;
3+
4+
class RadixConverter{
5+
static void Main(string[] args){
6+
Console.ForegroundColor = ConsoleColor.Green;
7+
Console.CursorVisible = false;
8+
Console.Title = "Radix Converter";
9+
Console.WriteLine("<-----------Radix Converter----------->");
10+
Console.WriteLine("Created by Morasiu (morasiu2@gmail.com)");
11+
ChooseOption();
12+
Console.ReadKey();
13+
}
14+
15+
private static void ChooseOption() {
16+
Console.WriteLine("Options:");
17+
Console.WriteLine("1 - Convert from decimal");
18+
Console.WriteLine("2 - Convert to decimal");
19+
20+
var isOptionCorrect = false;
21+
do {
22+
var key = Console.ReadKey().Key;
23+
switch (key) {
24+
case ConsoleKey.D1:
25+
isOptionCorrect = true;
26+
var number = GetNumber();
27+
var radix = GetRadix();
28+
var result = ConvertFromDecimal(number, radix);
29+
Console.WriteLine(number + " in " + radix + " is: " + result);
30+
break;
31+
case ConsoleKey.D2:
32+
isOptionCorrect = true;
33+
break;
34+
default:
35+
Console.Write("\b");
36+
continue;
37+
}
38+
} while (!isOptionCorrect);
39+
}
40+
41+
private static int GetNumber() {
42+
Console.Write("\bNumber: ");
43+
var input = Console.ReadLine();
44+
if(!int.TryParse(input, out var number)) {
45+
ExitWithError("ERROR: Wrong number");
46+
}
47+
return number;
48+
}
49+
50+
private static int GetRadix() {
51+
Console.Write("\bRadix: ");
52+
var input = Console.ReadLine();
53+
if(!int.TryParse(input, out var radix)) {
54+
ExitWithError("ERROR: Wrong number");
55+
}
56+
57+
if (radix > 36 || radix < 2)
58+
ExitWithError("ERROR: Radix needs to be between 2 and 36");
59+
60+
return radix;
61+
}
62+
63+
private static string ConvertFromDecimal(int number, int radix) {
64+
var result = "";
65+
var inputNumber = number;
66+
var alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
67+
68+
while (inputNumber >= radix) {
69+
var modal = inputNumber % radix;
70+
if (modal >= 10)
71+
result += alphabet[modal - 10];
72+
else
73+
result += modal;
74+
inputNumber = inputNumber / radix;
75+
}
76+
77+
if (inputNumber > 9)
78+
result += alphabet[inputNumber - 10];
79+
else
80+
result += inputNumber;
81+
return string.Concat(result.Reverse());
82+
}
83+
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();
88+
89+
foreach (var num in inputNumber) {
90+
91+
}
92+
93+
return result;
94+
}
95+
96+
private static void ExitWithError(string s) {
97+
Console.WriteLine(s);
98+
Environment.Exit(1);
99+
}
100+
}

0 commit comments

Comments
 (0)