/* * логика внутри цикла метода может показаться запутанной и тяжеловатой * для сопровождения. Собственно, это было сделано в пользу малого размера словаря * при желании его можно сделать более пригодным для сопровождения */ string Translate(int num,int power) { string result; int temp; vector<int> digits; char buff[100]; digits=Num2Digits(num,power); vector<int>::iterator it=digits.begin(); vector<int>::iterator end=digits.end(); int dig=digits.size()-1; while(it!=end) { switch(dig%3) { case 0: { sprintf(buff,"d%d%d", dig ,*it ); result+=D.GetTranslate(buff) + " "; break; } case 1: { if(*it) { if(*it==1) { temp=10*(*it); ++it; --dig; temp+=(*it); sprintf(buff,"%d", temp ); result+=D.GetTranslate(buff) + " "; sprintf(buff,"d%d0", dig ); result+=D.GetTranslate(buff) + " "; } else { sprintf(buff,"%d", *it*10 ); result+=D.GetTranslate(buff) + " "; } } break; } case 2: { if(*it) { sprintf(buff,"%d", *it*100 ); result+=D.GetTranslate(buff) + " "; } break; } } --dig; ++it; } return result; }
string TranslateIn8Power(int Num) { return Translate(Num,8)+Comments.GetTranslate("Ru comment about hex system"); }
string TranslateIn10Power(int Num) { return Translate(Num,10)+Comments.GetTranslate("Ru comment about dec system"); }