Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/46: Рейтинг темы: голосов - 46, средняя оценка - 4.83
 Аватар для skilllab
295 / 235 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1

Изменить окончания числительных

16.08.2011, 09:17. Показов 9039. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро!
Есть код: ColEl - комбобокс с цифрами от 1 до 50
конструкцией if можно добиться в зависимости от выбранного числа - соответствующее ему словесное добавление: "4 радиуса"; "12 радиусов"
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
                      string ss = ColEl.SelectedItem.ToString();
                      int digitdouble = Convert.ToInt32(ss);
 
                      int digitone = Convert.ToInt32(Right(ss, 1));
                            if (digitdouble <= 20 && digitdouble != 0) //если число двухзначное
                            {
                                //if (ColEl.SelectedIndex != 0)
                                //{
                                    if (digitdouble < 5)
                                    {
                                        if (digitdouble == 1)
                                        {
                                            BottomStr = "";
                                        }
                                        if (digitdouble != 1)
                                        {
                                            BottomStr = ColEl.SelectedItem + " радиуса";
                                        }
                                    }
                                    if (digitdouble >= 5)
                                    {
                                        BottomStr = ColEl.SelectedItem + " радиусов";
                                    }
                                //}
                            }
                            if (digitdouble > 20 && digitdouble != 0)
                            {
                                if (digitone == 1)
                                {
                                    BottomStr = ColEl.SelectedItem + " радиус";
                                }
                                if (digitone > 1 && digitone < 5)
                                {
                                    BottomStr = ColEl.SelectedItem + " радиуса";
                                }
                                if (digitone >= 5)
                                {
                                    BottomStr = ColEl.SelectedItem + " радиусов";
                                }
                                if (digitone == 0)
                                {
                                    BottomStr = ColEl.SelectedItem + " радиусов";
                                }
                            }
right: процедура-аналог в VB, делает тоже самое.
можно ли этот участок кода перевести в конструкцию switch ... case?
Вот ТУТ видел диапазон прямо в case - но у меня не получилось. Может можно как-то в перечислитель всё загнать?
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.08.2011, 09:17
Ответы с готовыми решениями:

Скажите пож та как изменить шрифт слова в Textbox если известны индекс вхождения и окончания?
Скажите пож та как изменить шрифт слова в Textbox если известны индекс вхождения и окончания?

Как изменить окончания даты?
Всем привет! Подскажите, как изменить окончания даты новости. Чтобы было, например, не 20 июль 2017, а 20 июля 2017.

Строки. 1- Вычеркнуть из текста все повторяющиеся слова. 2 - Изменить окончания слов «ый» на «ая»
1) Дан текст. Слова в тексте разделены пробелами. Вычеркнуть из текста все повторяющиеся слова. 2) Дан текст, содержащий не более 250...

12
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
16.08.2011, 09:58
вот здесь почитайте http://msdn.microsoft.com/ru-r... 90%29.aspx
0
 Аватар для skilllab
295 / 235 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
16.08.2011, 10:00  [ТС]
ничего интересного, тем более ответа на вопрос.
0
Заблокирован
16.08.2011, 10:06
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
       private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int stemp = 0;
            string str = string.Empty;
            int temp = int.Parse(comboBox1.SelectedItem.ToString());
            if (temp > 20)
                stemp = int.Parse(comboBox1.SelectedItem.ToString()[1].ToString());
            else stemp = temp;
 
            if (temp == 30 || temp == 40 || temp == 50 || (temp >= 10 && temp <= 20) || stemp > 4)
                str = comboBox1.SelectedItem + " радиусов";
            else if (stemp == 1 || temp == 1)
                str = comboBox1.SelectedItem + " радиус";
            else str = comboBox1.SelectedItem + " радиуса";
            this.Text = str;
        }
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
16.08.2011, 10:34
это вам тоже не интересно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
 
class Program
{
    static void Main()
    {
        Console.Write("Число: ");
        int value = int.Parse(Console.ReadLine());
        switch (value)
        {
            case 1:
                {
                    Console.Write("{0} радиус", value);
                    break;
                }
            case 2:
            case 3:
            case 4:
                {
                    Console.Write("{0} радиуса", value);
                    break;
                }
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
                {
                    Console.Write("{0} радиусов", value);
                    break;
                }
        }
        Console.ReadKey();
    }
}
по другому
C#
1
Case 7,15,23:
case не работает.

Добавлено через 26 минут
вот полная программа, задействованы все цифры от 1 до 50
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
 
class Program
{
    static void Main()
    {
        Console.Write("Введите число от 1 до 50: ");
        int value = int.Parse(Console.ReadLine());
        switch (value)
        {
            case 1:
            case 21:
            case 31:
            case 41:
                {
                    Console.Write("{0} радиус", value);
                    break;
                }
            case 2:
            case 3:
            case 4:
            case 22:
            case 23:
            case 24:
            case 32:
            case 33:
            case 34:
            case 42:
            case 43:
            case 44:
                {
                    Console.Write("{0} радиуса", value);
                    break;
                }
            default:
                {
                    Console.Write("{0} радиусов", value);
                    break;
                }
        }
        Console.ReadKey();
    }
}
1
 Аватар для skilllab
295 / 235 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
16.08.2011, 11:02  [ТС]
_lunar_, я спрашивал про возможность реализации case в виде диапазона, как в VB.
Но можно и так.

Кстати, почему такая конструкция не срабатывает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void button1_Click(object sender, EventArgs e)
        {
            perem = Convert.ToInt32(textBox1.Text);
            switch (perem)
            {
                case 1 | 21 | 31 | 41:
                    {
                        MessageBox.Show(perem.ToString() + "радиус");
                        break;
                    }
                case 2 | 3 | 4 | 22 | 23 | 24 | 32| 33 | 34 | 42 | 43 | 44:
                    {
                        MessageBox.Show(perem.ToString() + "радиуса");
                        break;
                    }
                default:
                    MessageBox.Show(perem.ToString() + "радиусов");
                    break;
            }
 
        }
на втором case
Метка "case 63:" уже встречалась в этом операторе выбора
хотя ваш код работает.
0
Заблокирован
16.08.2011, 11:02
Цитата Сообщение от _lunar_ Посмотреть сообщение
вот полная программа, задействованы все цифры от 1 до 50
Ну да? Походу, что-то у меня со зрением Насчитал только 16 цифр. А где остальные?

Добавлено через 51 секунду
skilllab, чем тебе мой пример не нравится?
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
16.08.2011, 11:04
а остальные это default
правда под остальные попали все цифры в диапазоне int кроме тех 16
0
 Аватар для skilllab
295 / 235 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
16.08.2011, 11:07  [ТС]
Цитата Сообщение от Rebicon Посмотреть сообщение
чем тебе мой пример не нравится?
только вот этим
Цитата Сообщение от skilllab Посмотреть сообщение
можно ли этот участок кода перевести в конструкцию switch ... case?
0
Заблокирован
16.08.2011, 11:11
Цитата Сообщение от _lunar_ Посмотреть сообщение
а остальные это default
Всё верно. Это я не то скопировал
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
16.08.2011, 11:14
Цитата Сообщение от skilllab Посмотреть сообщение
Кстати, почему такая конструкция не срабатывает
хм, попробовал сейчас через "или" сделать студия ошибки не дала, но при вводе например 21, результат получается из default'а - 21 радиусов. Насколько я понимаю один case проверяет на соответствие только одно значение.
0
 Аватар для atomohod
20 / 20 / 3
Регистрация: 01.04.2010
Сообщений: 57
16.08.2011, 19:04
Логическое "или", в данном случае оператор применяемый к int. Поэтому-то и не работает, так как происходит суммирование
Попробуйте:

C#
1
Console.WriteLine(3|4);
и поймете суть
0
 Аватар для skilllab
295 / 235 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
17.08.2011, 09:50  [ТС]
То есть, в одну строку такую конструкцию не запихнуть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.08.2011, 09:50
Помогаю со студенческими работами здесь

Заменить в предложении окончания слов «ing» на окончания «ed»
Напишите программу, которая осуществляет обработку информации условию, заданных ниже. Разделителем слов предложения считать пробел ( '_' )....

Определить количество числительных в строке
Люди добрые, помогите пожалуйста. Приму любую помощь. Задача такая: Определить количество числительных в строке C++. Спасибо всем кто...

Вывод числительных на русском языке.
Напишите программу, которая читает целое положительное число в десятичном представлении, а на выходе выдает это же число в десятичном...

Распознавание числительных, записанных словами
речь идет о распознании числительных в буквенном виде, тоесть пример таков (три -&gt;3 , двадцать -&gt; 20) , как создать алгоритм чтобы он...

Перевод текстовых числительных в натуральную форму
Есть задача: На вход подается фраза на русском языке, содержащая числительное. Например, &quot;Я хочу квартиру за 10.5 миллионов&quot; или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru