Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2010, 01:36   #1
ололошенько
Заблокирован
 
Регистрация: 10.08.2010
Сообщений: 566
По умолчанию switch

из всех структур свич показался мне самым разнообразным,и там мне больше всего сложнее будет его осваивать мб,вот 1-й вопрос:метка case : как написать метку например не '1' а '1-5' чтобы от и до какогото значения,а ещё было бы неплохо от уквы А до буквы Г например,кстате былобы неплохо узнать как зделать чтобы было так и в if например if(x 5-8) как то так
ололошенько вне форума Ответить с цитированием
Старый 30.09.2010, 01:58   #2
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Ну боюсь что прямо так через черточку врядли получиться, ну а так, можно записать:
case 1: case 2: case 3: case 4: case 5:
оператор_1;
оператор_2;
break;
в данном случае оператор_1 и оператор_2, а затем и break, будут выполняться и для 1 и для 2 и т.д. до 5. Точно так же для букв:
case 'a': case 'A': case 'b': case 'B':
Для оператора условия if можно объеденить условия посредствам ||(или), если х=5 или х=6 или х=7, хотябы для одного истинного условия будут выполняться операторы из блока if.
maryan.vetrov вне форума Ответить с цитированием
Старый 30.09.2010, 03:33   #3
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Если компилятор gcc, то можно и так:
Код:
case 1 ... 5
Вот ссылка http://gcc.gnu.org/onlinedocs/gcc-4....ml#Case-Ranges
Но другие компиляторы, вроде, не поддерживают эти инструкции.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 30.09.2010, 03:57   #4
ололошенько
Заблокирован
 
Регистрация: 10.08.2010
Сообщений: 566
По умолчанию

Цитата:
Сообщение от maryan.vetrov Посмотреть сообщение
Ну боюсь что прямо так через черточку врядли получиться, ну а так, можно записать:
case 1: case 2: case 3: case 4: case 5:
оператор_1;
оператор_2;
break;
в данном случае оператор_1 и оператор_2, а затем и break, будут выполняться и для 1 и для 2 и т.д. до 5. Точно так же для букв:
case 'a': case 'A': case 'b': case 'B':
Для оператора условия if можно объеденить условия посредствам ||(или), если х=5 или х=6 или х=7, хотябы для одного истинного условия будут выполняться операторы из блока if.
то и так понятно,но если мне нужно не 1-5 а 1-1231 и 5232-31231 что тогда?вот что я имелл ввидууу....с буквами также,это задротство кажду отмечать
ололошенько вне форума Ответить с цитированием
Старый 30.09.2010, 04:16   #5
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
По умолчанию

Код:
switch (выражение)
{
case константное_выр-е: операторы;
case константное_выр-е: операторы;
...
case константное_выр-е: операторы;
[default: операторы]
}
Вместо константное выр-е пишите,например,'a'..'z' или '1'..'10000' в Паскале по крайней мере работает.
Вместо "выражение" Вашу переменную.
P.S.
Читайте формат операторов языка или в крайнем используйте "Великий Метод Научного Тыка" - тык - получилось,ага запомнил, втык - не получилось
Темы для WordPress. Русские WordPress шаблоны
Alexei91 вне форума Ответить с цитированием
Старый 30.09.2010, 06:18   #6
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от ололошенько Посмотреть сообщение
то и так понятно,но если мне нужно не 1-5 а 1-1231 и 5232-31231 что тогда?вот что я имелл ввидууу....с буквами также,это задротство кажду отмечать
Тогда, как уже писали выше, все зависит от компилятора, gcc позволяет использовать в метке диапозон, ссылку вам дали.
maryan.vetrov вне форума Ответить с цитированием
Старый 30.09.2010, 06:40   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

case, - это, своего рода переключатель (как переключатель диапазонов у телевизора). Требовать от него большего, просто бессмыслено. Для выделения числовых и буквенных диапызонов лучше использовать оператор if вот таким образом:
if( x >= 5 && x<=1000) {операторы;}
В этом случае "операторы" выполнятся, если числовые значения будут находиться в диапазоне от 5 до 1000. В данной конструкции можно задавать несколько диапазонов например вот так:
if((x >= 5 && x<=1000) || (x>=10000 && x<= 1000000)){}.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 30.09.2010, 11:15   #8
ололошенько
Заблокирован
 
Регистрация: 10.08.2010
Сообщений: 566
По умолчанию

о норм ответ спс,такого и ждал,maryan.vetrov и Roof вконце концов я же пришел сюда не нащёт компиляторов советуваться,меня полснотью Borland устравивает

хм... вот по примеру пробовал пробовал всяко переделовал,елементарная казалось бы программа с цыклом,но нет,чё тут не так?
Код:
#include <iostream.h>
#include <tchar.h>
#include <stdlib.h>
#include <conio.h>


main()
{
	int cCount=0,grade,aCount=0;

	while((grade=cin.get())!='b')
	{
		cin>>grade;
		switch(grade)
		{
			case 'a':
			++aCount;
			break;
			case 'c':
			++cCount;
			break;
			default:
			cout<<"ololo";
			break;
		}
	}
	cout<<aCount<<cCount;
}

Последний раз редактировалось Stilet; 30.09.2010 в 11:38.
ололошенько вне форума Ответить с цитированием
Старый 30.09.2010, 11:39   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что с ним не так?
И что ты хочешь этим кодом?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2010, 12:25   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

cin.get() обсуждался в соседней теме. Это первое.
Второе - тип grade у вас - int, а значит, и читать его будет как int. Сделайте его char и будет вам счастье.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
switch Артэс Общие вопросы C/C++ 40 29.05.2010 20:11
switch Dimarik Общие вопросы C/C++ 4 11.04.2010 15:56
язык C, switch pproger Общие вопросы C/C++ 8 16.12.2009 18:17
Switch с Фибоначчи Клайд Общие вопросы C/C++ 0 20.10.2009 20:16
Switch Division Общие вопросы C/C++ 3 11.01.2009 23:52