private void btnDecline_Click(object sender, EventArgs e) { CyrNumber number = new CyrNumber(); CyrResult result = null; switch (ddlAction.SelectedIndex) { case 0: if (txtItem.Text.IsNullOrEmpty()) { MessageBox.Show("Необходимо ввести единицу измерения!"); return; } CyrNoun noun; try { noun = cyrCollection.Get(txtItem.Text, Cyriller.Model.GetConditionsEnum.Similar); } catch (CyrWordNotFoundException ex) { MessageBox.Show(string.Format("Слово {0} не найдено в коллекции!", ex.Word)); return; } CyrNumber.Item item = new CyrNumber.Item(noun); result = number.Decline(txtNumber.Value, item); break; case 1: result = number.Decline(txtNumber.Value); break; case 2: result = number.Decline(txtNumber.Value, Cyriller.Model.GendersEnum.Feminine, Cyriller.Model.AnimatesEnum.Inanimated); break; case 3: result = number.Decline(txtNumber.Value, new CyrNumber.RurCurrency()); break; case 4: result = number.Decline(txtNumber.Value, new CyrNumber.UsdCurrency()); break; case 5: result = number.Decline(txtNumber.Value, new CyrNumber.EurCurrency()); break; case 6: result = number.Decline(txtNumber.Value, new CyrNumber.YuanCurrency()); break; default: MessageBox.Show("Необходимо выбрать тип склонения!"); return; } SetResult(result); }
public string DeclineNoun(string word, int number, string caseName = "Nominative") { var nounsCollec = nouns.Get(word, GetConditionsEnum.Similar); var cyrNumber = new CyrNumber(); CyrNumber.Item item = new CyrNumber.Item(nounsCollec); var declineRes = cyrNumber.Decline(number, item); return(GetDeclensionInCase(declineRes, caseName)); }
static void Main(string[] args) { // Создаем генератор случайных чисел. Random rand = new Random(); // Создаем склонятор чисел. CyrNumber number = new CyrNumber(); { // Склоняем случайное число. CyrResult result = number.Decline(5300); Console.WriteLine(result.ToRussianStringDictionary()); } { // Склоняем случайное количество рублей. // Так же можно использовать классы `CyrNumber.EurCurrency`, `CyrNumber.UsdCurrency` и `CyrNumber.YuanCurrency`. // Либо создать свой класс унаследовав его от `CyrNumber.Currency`. CyrNumber.Currency currency = new CyrNumber.RurCurrency(); CyrResult result = number.Decline((decimal)5300, currency); } { // Создаем коллекцию всех существительных. CyrNounCollection nouns = new CyrNounCollection(); // Получаем существительное из коллекции используя точное совпадение. CyrNoun noun = nouns.Get("компьютер", GetConditionsEnum.Strict); // Упаковываем существительное для склонения количества. CyrNumber.Item item = new CyrNumber.Item(noun); // Склоняем случайное количество компьютеров. CyrResult result = number.Decline(rand.Next(0, 100), item); } // Выбираем правильное склонение существительного в зависимости от количества. string name = number.Case(rand.Next(0, 100), "компьютер", "компьютера", "компьютеров"); }
public ActionResult Number(string w, string a, string i) { ViewBag.Page = "Decline.Number"; if (w.IsNullOrEmpty() || a.IsNullOrEmpty()) { ViewBag.Action = "Item"; return(View()); } List <string> errors = new List <string>(); CyrResult result = null; decimal v; if (decimal.TryParse(w, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture, out v)) { CyrNumber cyr = new CyrNumber(); CyrNumber.Item item; switch (a) { case "Item": CyrNoun noun; try { noun = this.NounCollection.Get(i, out string fw, out CasesEnum c, out NumbersEnum n); } catch (CyrWordNotFoundException ex) { errors.Add(string.Format("Слово \"<strong>{0}</strong>\" не найдено в коллекции. Попбробуйте другое слово.", ex.Word)); break; } item = new CyrNumber.Item(noun); result = cyr.Decline(v, item); if ((long)v == v) { string[] strings = item.GetName(CasesEnum.Nominative, (long)v); ViewBag.ItemText = cyr.Case((long)v, strings[0], strings[1], strings[2]); } else { string[] strings = item.GetName(CasesEnum.Nominative, 2); ViewBag.ItemText = strings[1]; } break; case "Masculine": result = cyr.Decline(v, Model.GendersEnum.Masculine, Model.AnimatesEnum.Inanimated); break; case "Feminine": result = cyr.Decline(v, Model.GendersEnum.Feminine, Model.AnimatesEnum.Inanimated); break; case "Rub": result = cyr.Decline(v, new CyrNumber.RurCurrency()); ViewBag.CurrencyClass = "fa-ruble"; ViewBag.CurrencyText = "руб."; break; case "Usd": result = cyr.Decline(v, new CyrNumber.UsdCurrency()); ViewBag.CurrencyClass = "fa-usd"; ViewBag.CurrencyText = "$"; break; case "Eur": result = cyr.Decline(v, new CyrNumber.EurCurrency()); ViewBag.CurrencyClass = "fa-eur"; ViewBag.CurrencyText = "€"; break; case "Yuan": result = cyr.Decline(v, new CyrNumber.YuanCurrency()); ViewBag.CurrencyClass = "fa-yen"; ViewBag.CurrencyText = "¥"; break; default: errors.Add(string.Format("{0} не является правильной операцией!", a)); break; } } else { errors.Add(string.Format("{0} не является правильным числом!", w)); } ViewBag.Item = i; ViewBag.Text = w; ViewBag.Action = a; ViewBag.Result = result; ViewBag.Errors = errors; ViewBag.Cases = CyrDeclineCase.GetEnumerable().ToArray(); return(View()); }
public ActionResult Number(string w, string a, string i) { ViewBag.Page = "Decline.Number"; if (w.IsNullOrEmpty() || a.IsNullOrEmpty()) { ViewBag.Action = "Item"; return View(); } List<string> errors = new List<string>(); CyrResult result = null; decimal v; if (decimal.TryParse(w, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture, out v)) { CyrNumber cyr = new CyrNumber(); CyrNumber.Item item; switch (a) { case "Item": CyrNoun noun; try { noun = this.NounCollection.Get(i, GetConditionsEnum.Similar); } catch (CyrWordNotFoundException ex) { errors.Add(string.Format("Слово \"<strong>{0}</strong>\" не найдено в коллекции. Попбробуйте другое слово.", ex.Word)); break; } item = new CyrNumber.Item(noun); result = cyr.Decline(v, item); if ((long)v == v) { string[] strings = item.GetName(CasesEnum.Nominative, (long)v); ViewBag.ItemText = cyr.Case((long)v, strings[0], strings[1], strings[2]); } else { string[] strings = item.GetName(CasesEnum.Nominative, 2); ViewBag.ItemText = strings[1]; } break; case "Masculine": result = cyr.Decline(v, Model.GendersEnum.Masculine, Model.AnimatesEnum.Inanimated); break; case "Feminine": result = cyr.Decline(v, Model.GendersEnum.Feminine, Model.AnimatesEnum.Inanimated); break; case "Rub": result = cyr.Decline(v, new CyrNumber.RurCurrency()); ViewBag.CurrencyClass = "fa-ruble"; ViewBag.CurrencyText = "руб."; break; case "Usd": result = cyr.Decline(v, new CyrNumber.UsdCurrency()); ViewBag.CurrencyClass = "fa-usd"; ViewBag.CurrencyText = "$"; break; case "Eur": result = cyr.Decline(v, new CyrNumber.EurCurrency()); ViewBag.CurrencyClass = "fa-eur"; ViewBag.CurrencyText = "€"; break; case "Yuan": result = cyr.Decline(v, new CyrNumber.YuanCurrency()); ViewBag.CurrencyClass = "fa-yen"; ViewBag.CurrencyText = "¥"; break; default: errors.Add(string.Format("{0} не является правильной операцией!", a)); break; } } else { errors.Add(string.Format("{0} не является правильным числом!", w)); } ViewBag.Item = i; ViewBag.Text = w; ViewBag.Action = a; ViewBag.Result = result; ViewBag.Errors = errors; return View(); }