Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Как реализовать сумму прописью?

Автор: OlegGG
Исходная ссылка: - - -

Когда-то давно написал:
//--------------------------------------------------------------------------------------
 
 //summa.h
 
 AnsiString triada(AnsiString in, int tn)
 
 {
 
 if (in == "   ") return "";
 
 if (in == "000") return "";
 
 AnsiString out = "";
 
 AnsiString sotni[9] =
 
 {"сто", "двести", "триста", "четыреста", "пятьсот",
 
 "шестьсот", "семьсот", "восемьсот", "девятьсот"};
 
 AnsiString dubl[10] =
 
 {"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать",
 
 "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"};
 
 AnsiString des[8] =
 
 {"двадцать", "тридцать", "сорок", "пятьдесят",
 
 "шестьдесят", "семьдясят", "восемьдясят", "девяносто"};
 
 AnsiString ed[9] = {"один", "два", "три", "четыре", "пять", "шесть","семь", "восемь", "девять"};
 
 AnsiString edj[9] = {"одна", "две", "три", "четыре", "пять", "шесть","семь", "восемь", "девять"};
 
 AnsiString ind[5] = {"", " тысяч", " миллион", " миллиард", " триллион"};
 
 AnsiString post;
 
 if (in[1] != ' ') if (in[1] != '0')
 
         { out = out + sotni[StrToInt(in[1])-1]; }
 
 if (in[2] == '1')
 
         { out = out + " " + dubl[StrToInt(in[3])]; }
 
 if (in[2] != '1') if (in[2] != ' ') if (in[2] != '0')
 
         { out = out + " " + des[StrToInt(in[2])-2]; }
 
 if (in[3] != '0') if (in[2] != '1')
 
         {
 
         if (tn == 1)
 
                 out = out + " " + edj[StrToInt(in[3])-1];
 
         if (tn != 1)
 
                 out = out + " " + ed[StrToInt(in[3])-1];
 
         }
 
 if (tn>0) if (in[2] != '1')
 
         {
 
         if (tn==1) switch (in[3])
 
                 {
 
                 case '1': post = ind[tn] + "а"; break;
 
                 case '2': post = ind[tn] + "и"; break;
 
                 case '3': post = ind[tn] + "и"; break;
 
                 case '4': post = ind[tn] + "и"; break;
 
                 default : post = ind[tn] + ""; break;
 
                 }
 
         if ((tn==2)||(tn==3)||(tn==4)) switch (in[3])
 
                 {
 
                 case '1': post = ind[tn] + ""; break;
 
                 case '2': post = ind[tn] + "а"; break;
 
                 case '3': post = ind[tn] + "а"; break;
 
                 case '4': post = ind[tn] + "а"; break;
 
                 default : post = ind[tn] + "ов"; break;
 
                 }
 
         }
 
 else
 
         {
 
         switch (tn)
 
                 {
 
                 case 1  : post = ind[tn]; break;
 
                 default : post = ind[tn] + "ов"; break;
 
                 }
 
         }
 
 out = out + post;
 
 return out;
 
 }
 
 AnsiString summa(AnsiString in)
 
 {
 
 AnsiString out;
 
 AnsiString trs[5];
 
 AnsiString tro[5];
 
 AnsiString buf;
 
 int n,s;
 
 div_t dr;
 
 
 
 while (in.Length() < 15)
 
         {
 
         in = " " + in;
 
         }
 
 for (n=0;n<5;n++) trs[n] = in;
 
 trs[0] = trs[0].Delete(1,in.Length()-3);
 
 trs[1] = trs[1].Delete(1,in.Length()-6).Delete(4,4);
 
 trs[2] = trs[2].Delete(1,in.Length()-9).Delete(4,6);
 
 trs[3] = trs[3].Delete(1,in.Length()-12).Delete(4,9);
 
 trs[4] = trs[4].Delete(1,in.Length()-15).Delete(4,12);
 
 
 
 for (n=0;n<5;n++)
 
         {
 
         tro[n] = triada(trs[n],n);
 
         }
 
 out = " "+tro[4]+" "+tro[3]+" "+tro[2]+" "+tro[1]+" "+tro[0]+" ";
 
 out = out.Trim();
 
 return out;
 
 }
 
 //--------------------------------------------------------------------------------------
 
 // / summa.h
 
 
Работает так:
AnsiString s = summa("123");
 
 



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS