@@ -23,12 +23,10 @@ private static void ChooseOption() {
23
23
switch ( key ) {
24
24
case ConsoleKey . D1 :
25
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 ) ;
26
+ ConvertFromDecimalAndDisplayResult ( ) ;
30
27
break ;
31
28
case ConsoleKey . D2 :
29
+ ConvertToDecimalAndDisplayResult ( ) ;
32
30
isOptionCorrect = true ;
33
31
break ;
34
32
default :
@@ -38,6 +36,21 @@ private static void ChooseOption() {
38
36
} while ( ! isOptionCorrect ) ;
39
37
}
40
38
39
+ private static void ConvertToDecimalAndDisplayResult ( ) {
40
+ Console . Write ( "\b Number: " ) ;
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
+
41
54
private static int GetNumber ( ) {
42
55
Console . Write ( "\b Number: " ) ;
43
56
var input = Console . ReadLine ( ) ;
@@ -63,7 +76,7 @@ private static int GetRadix() {
63
76
private static string ConvertFromDecimal ( int number , int radix ) {
64
77
var result = "" ;
65
78
var inputNumber = number ;
66
- var alphabet = Enumerable . Range ( 'A' , 26 ) . Select ( x => ( char ) x ) . ToArray ( ) ;
79
+ var alphabet = GetAlphabet ( ) ;
67
80
68
81
while ( inputNumber >= radix ) {
69
82
var modal = inputNumber % radix ;
@@ -81,18 +94,34 @@ private static string ConvertFromDecimal(int number, int radix) {
81
94
return string . Concat ( result . Reverse ( ) ) ;
82
95
}
83
96
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 ( ) ;
88
100
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 ) ) ;
91
103
}
92
104
93
105
return result ;
94
106
}
95
107
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
+
96
125
private static void ExitWithError ( string s ) {
97
126
Console . WriteLine ( s ) ;
98
127
Environment . Exit ( 1 ) ;
0 commit comments