294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,989
Записей в блоге: 1
1

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

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

Author24 — интернет-сервис помощи студентам
Доброе утро!
Есть код: 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2011, 09:17
Ответы с готовыми решениями:

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

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

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

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

12
Эксперт С++
3573 / 2827 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 22
16.08.2011, 09:58 2
вот здесь почитайте http://msdn.microsoft.com/ru-r... 90%29.aspx
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,989
Записей в блоге: 1
16.08.2011, 10:00  [ТС] 3
ничего интересного, тем более ответа на вопрос.
0
Заблокирован
16.08.2011, 10:06 4
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
Эксперт С++
3573 / 2827 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 22
16.08.2011, 10:34 5
это вам тоже не интересно
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
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,989
Записей в блоге: 1
16.08.2011, 11:02  [ТС] 6
_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 7
Цитата Сообщение от _lunar_ Посмотреть сообщение
вот полная программа, задействованы все цифры от 1 до 50
Ну да? Походу, что-то у меня со зрением Насчитал только 16 цифр. А где остальные?

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

C#
1
Console.WriteLine(3|4);
и поймете суть
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,989
Записей в блоге: 1
17.08.2011, 09:50  [ТС] 13
То есть, в одну строку такую конструкцию не запихнуть?
0
17.08.2011, 09:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2011, 09:50
Помогаю со студенческими работами здесь

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

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

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

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

Программа, тестирующая знание английских числительных от 0 до 20
Нужно составить программу, которая случайным образом формирует 10 тестовых вопросов, в которых...

Вывести количество чисел и их сумму в виде числительных
Считывает текстовый файл. каждая строка которого изображает целое число, изображает слева и справа...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru