@@ -48,11 +48,11 @@ static string Hundreds(int n)
4848
4949 if ( n < 120 )
5050 {
51- return "сто и " + under20 [ d ] ;
51+ return hundreds [ i ] + " и " + under20 [ d ] ;
5252 }
5353 else if ( n >= 120 && n < 200 )
5454 {
55- return "сто " + ConvertWholeNumber ( d ) ;
55+ return hundreds [ i ] + " " + ConvertWholeNumber ( d ) ;
5656 }
5757 else
5858 {
@@ -70,25 +70,13 @@ private static string Thousands(int n)
7070
7171 if ( n == 1000 ) return "хиляда" ;
7272
73- if ( n > 1000 && n < 1099 )
74- {
75- return "хиляда и " + Tens ( d ) ;
76- }
73+ if ( n > 1000 && n < 1099 ) return "хиляда и " + Tens ( d ) ;
7774
78- if ( n > 1099 && n < 2000 )
79- {
80- return "хиляда " + Hundreds ( d ) ;
81- }
75+ if ( n > 1099 && n < 2000 ) return "хиляда " + Hundreds ( d ) ;
8276
83- if ( d == 0 ) // 2000,3000,4000, etc
84- {
85- return units [ i ] + " хиляди" ;
86- }
77+ if ( d == 0 ) return units [ i ] + " хиляди" ; // 2000,3000,4000, etc
8778
88- if ( d < 100 )
89- {
90- return units [ i ] + " хиляди и " + Tens ( d ) ;
91- }
79+ if ( d < 100 ) return units [ i ] + " хиляди и " + Tens ( d ) ;
9280
9381 return units [ i ] + " хиляди " + Hundreds ( d ) ;
9482 }
@@ -100,7 +88,7 @@ private static string TensOfThousands(int number)
10088 var e = n % 1000 ;
10189 var b = n / 1000 ;
10290 var i = number / 1000 ;
103- var t = number / 10 ;
91+ var t = i / 100 ;
10492 var s = i % 10 ;
10593 var of = e % 100 ;
10694 var tware = of % 10 ;
@@ -124,88 +112,64 @@ private static string TensOfThousands(int number)
124112 {
125113 if ( of == 0 ) // 11100, 11900, 11800 , etc
126114 {
127- if ( e == 0 )
128- {
129- return teens [ s ] + " хиляди" ;
130- }
115+ if ( e == 0 ) return teens [ s ] + " хиляди" ;
131116
132- return teens [ s ] + " хиляди и " + Hundreds ( e ) ;
117+ return BuildThousandsWithAnd ( teens [ s ] , Hundreds ( e ) ) ;
133118 }
134119
135- return teens [ s ] + " хиляди " + Hundreds ( e ) ;
120+ return BuildThousandsWithoutAnd ( teens [ s ] , Hundreds ( e ) ) ;
136121 }
137122
138123 if ( number > 20000 && number < 99999 )
139124 {
140125 if ( b == 1 )
141126 {
142- if ( e < 100 )
143- {
144- return tens [ o ] + " и една хиляди и " + Tens ( e ) ;
145- }
146-
147- if ( tware == 0 )
148- {
149- return tens [ o ] + " и една хиляди и " + Hundreds ( e ) ;
150- }
151-
152- if ( tware > 0 )
153- {
154- return tens [ o ] + " и една хиляди " + Hundreds ( e ) ;
155- }
127+ if ( e < 100 ) return tens [ o ] + " и една хиляди и " + Tens ( e ) ;
128+
129+ if ( tware == 0 ) return tens [ o ] + " и една хиляди и " + Hundreds ( e ) ;
130+
131+ if ( tware > 0 ) return tens [ o ] + " и една хиляди " + Hundreds ( e ) ;
156132 }
157133
158134 if ( b == 2 )
159135 {
160- if ( e < 100 )
161- {
162- return tens [ o ] + " и две хиляди и " + Tens ( e ) ;
163- }
164-
165- if ( tware == 0 )
166- {
167- return tens [ o ] + " и две хиляди и " + Hundreds ( e ) ;
168- }
169-
170- if ( tware > 0 )
171- {
172- return tens [ o ] + " и две хиляди " + Hundreds ( e ) ;
173- }
136+ if ( e < 100 ) return tens [ o ] + " и две хиляди и " + Tens ( e ) ;
137+
138+ if ( tware == 0 ) return tens [ o ] + " и две хиляди и " + Hundreds ( e ) ;
139+
140+ if ( tware > 0 ) return tens [ o ] + " и две хиляди " + Hundreds ( e ) ;
174141 }
175142
176- return Tens ( i ) + " хиляди и " + Hundreds ( e ) ;
143+ return BuildThousandsWithAnd ( Tens ( i ) , Hundreds ( e ) ) ;
177144 }
178145
179- if ( n == 0 ) // 10000,20000,30000, etc
180- {
181- return tens [ o ] + " хиляди" ;
182- }
146+ if ( n == 0 ) return tens [ o ] + " хиляди" ; // 10000,20000,30000, etc
183147
184- if ( n < 100 )
185- {
186- return tens [ o ] + " хиляди и " + Tens ( of ) ;
187- }
148+ if ( n < 100 ) return BuildThousandsWithAnd ( tens [ o ] , Tens ( of ) ) ;
188149
189- return Tens ( i ) + " хиляди " + Hundreds ( e ) ;
150+ return BuildThousandsWithoutAnd ( Tens ( i ) , Hundreds ( e ) ) ;
151+ }
152+
153+ static string BuildThousandsWithoutAnd ( string thousands , string afterThousands )
154+ {
155+ return thousands + " хиляди " + afterThousands ;
190156 }
191157
158+ static string BuildThousandsWithAnd ( string thousands , string afterThousands )
159+ {
160+ return thousands + " хиляди и " + afterThousands ;
161+ }
192162
193163 public static string Convert ( decimal number )
194164 {
195- if ( number == 0 || number == 0.0m )
196- {
197- return under20 [ 0 ] + AppendLvFemale ; // нула лева
198- }
165+ if ( number == 0 || number == 0.0m ) return under20 [ 0 ] + AppendLvFemale ; // нула лева
199166
200167 number = Math . Abs ( number ) ; // Convert negative number to positive
201168
202169 int leva = ( int ) number ;
203170 int stotinki = ( int ) ( ( number % 1.0m ) * 100 ) ;
204171
205- if ( number == 1 && stotinki == 0 )
206- {
207- return under20 [ leva ] + AppendLvMale ; // един лев
208- }
172+ if ( number == 1 && stotinki == 0 ) return under20 [ leva ] + AppendLvMale ; // един лев
209173
210174 string levaWords = leva != 1 ? ConvertWholeNumber ( leva ) + AppendLvFemale : "един" + AppendLvMale ;
211175
0 commit comments