Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
13 / 13 / 0
Регистрация: 16.11.2015
Сообщений: 18
1

Как правильно использовать switch?

16.12.2015, 21:16. Показов 2217. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как правильно пользоваться Switch?
Если s от 0 до 10 должно выполняться одно действие, если от 10 до 100 - другое и т.д.
C++
1
2
3
4
5
6
7
8
9
10
11
12
           switch (s){
                case (s=0-10):  if (MainForm->Color==clRed){
                                             MainForm->Color=clBlue;
                                      else MainForm->Color=clRed;
                                      }
                        break;
                case (s=10-100):
                        break;
                case (s=100-1000):
                        break;
                case (s>1000):
        }
Конкретно ошибка тут - case (s=0-10). Как правильно записать?

Добавлено через 3 минуты
Если switch не подходит для такой задачи лучше сразу скажите.)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2015, 21:16
Ответы с готовыми решениями:

Как правильно использовать ShellExecute ?
понимаю что миллион раз было,но объясните мне. пишу сначала это #include "ShellAPI.h" потом...

Как правильно использовать CreateProcess
Как мне запустить bat файл с помощью CreateProcess который находится вот по этому пути...

Как правильно использовать поиск файлов?
Всем привет! Вообще воспользовался кодо по поиску файлов, все работает нормально, но появился...

Как использовать оператор switch в структуре
У меня есть какая-та определенная структура, и мне нужно чтобы были вариации поиск определенного,...

9
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
16.12.2015, 21:30 2
Расписывайте все от 0 - 100, либо результата делите на 10 и сравнивайте по целому.

Добавлено через 1 минуту
Что мешает прописать условие от 10-100, от 101-1000 и больше 1001 ???
0
13 / 13 / 0
Регистрация: 16.11.2015
Сообщений: 18
16.12.2015, 21:44  [ТС] 3
Если ты про отсутствие операторов, то это пока неважно. У меня вылезает ошибка с надписью, что в case должно быть константное выражение. Мне интересно, как это реализовать.
0
случайный прохожий
3030 / 2061 / 626
Регистрация: 20.07.2013
Сообщений: 5,543
16.12.2015, 21:48 4
Если использовать логарифм по основанию 10, то примерно так
C++
1
switch (int(floor(log10(s))))
а потом
C++
1
case (0)
C++
1
case (1)
т. д.
Из-за момента неопределенности границ интервалов (например, в примере 10 входит в два интервала, нужно уточнить, к какому точно относится число) сам переделаешь под свою ситуацию при необходимости.

P.S.: константное выражение - это число, а не операция присваивания, как у тебя.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32990 / 21296 / 8180
Регистрация: 22.10.2011
Сообщений: 36,589
Записей в блоге: 8
16.12.2015, 21:50 5
Я бы сделал так, однако:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Math.hpp>
 
// ...
 
    switch((int)Log10((float)s))
    {
        case 0 : 
            ShowMessage("0 - 9"); break;
        case 1 :
            ShowMessage("10 - 99"); break;
        case 2 : 
            ShowMessage("100 - 999"); break;
        case 3 :
            ShowMessage("1000 - 9999"); break;
    }
Добавлено через 28 секунд
Упс, опоздал
1
13 / 13 / 0
Регистрация: 16.11.2015
Сообщений: 18
16.12.2015, 22:21  [ТС] 6
Ещё один вопрос.
Переменная не является подходящей константой?
Например:
C++
1
2
switch (s){
         case i:
0
случайный прохожий
3030 / 2061 / 626
Регистрация: 20.07.2013
Сообщений: 5,543
16.12.2015, 23:28 7
Пора изучать синтаксис. После case должно быть число, а не переменная. Тебе же текст ошибки прямым образом на это намекает.
0
1702 / 898 / 207
Регистрация: 25.11.2009
Сообщений: 1,847
16.12.2015, 23:33 8
Цитата Сообщение от Mihatron Посмотреть сообщение
Переменная не является подходящей константой?
только если объявлена как const, но это уже и не совсем переменная )

А тебе обязательно switch использовать? В такой ситуации логично использовать if else
0
13 / 13 / 0
Регистрация: 16.11.2015
Сообщений: 18
16.12.2015, 23:58  [ТС] 9
Пора изучать синтаксис.
Учу вот, читая такие темы.
В такой ситуации логично использовать if else
Я уже закончил программу. Именно if и else использовал.
Кстати, может кто сделать рандом нормальный мне? В переменную r. Интервал от 1 до 3 включительно.
Чем короче, тем лучше. У меня получилось вроде, но срабатывает с 5-6 раза.))
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
17.12.2015, 01:39 10
Цитата Сообщение от Mihatron Посмотреть сообщение
Если switch не подходит для такой задачи
Можно и switch при желании...
C++
1
2
3
4
5
6
7
8
9
      int s = 385; __int64 rez=0, pp=1;
 
      while (s >= pp) { pp *= 10; rez++; } 
      switch(rez)
      { case 1: /* somesing1 */; break;  //  1-10
        case 2: /* somesing2 */; break;  //  10-100
        case 3: /* somesing3 */; break;  //  100-1000
        case 4: /* somesing4 */; break;  //  > 1000
      }
1
17.12.2015, 01:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2015, 01:39
Помогаю со студенческими работами здесь

Как правильно передать указатель на структуру, и правильно ее использовать
Я планирую сделать сортировку, но компилятор начал ругаться &quot;Нет существует подходящей функции...

Как использовать один и тот же case в switch несколько раз?
Как использовать один и тот же case в switch несколько раз?

Как правильно применять оператор switch
Подскажите пожалуйста, в чём здесь ошибка. Язык С++. Среда C++ Builder 6. void __fastcall...

Как сделать возможность использовать в функции нужный массив без кучи if или switch-case?
Есть несколько массивов и одна функция.Как сделать возможность использовать в функции нужный массив...

Как правильно использовать struct?
Написал небольшую, глупенькую программку, но столкнулся с проблемой заполнения структуры. Если...

Как правильно использовать processEvents() ?
Тэкс... парни, что - то поток отказывается сигналы обрабатывать не смотря на processEvents() ......


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

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