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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2011, 21:40   #1
countteran
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 33
По умолчанию switch и case C++

Я начал изучать С++ с небольшими знаниями паскаля. В паскале есть очень хорошая функция case, кто знает, подскажите есть ли она или ее подобие по принципу работы в С ???
countteran вне форума Ответить с цитированием
Старый 03.05.2011, 22:03   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Накая функция имеется.
Используется совместно с переключателем switch.

Код:
switch(num)
{
  case 0 : statement_1; break;
  case 1 : statement_n; break;
  default : statement_default;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 04.05.2011, 07:30   #3
countteran
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 33
По умолчанию

Спасибо за ответ! Но можно ли поподробней, если не сложно. А то попробовал написать:
Код:
...
void main()
{
 	int a,n;
    a=2; n=0;
    switch (a);
    {
        case 1: n=1;
        case 2: n=2;
        case 3: n=3;
    }
    cout<<n;
}
...
а он мне пишет :"1>main.cpp(9): warning C4060: оператор switch не содержит метку "case" или "default"
1>main.cpp(11): error C2046: недопустимый вариант выбора
1>main.cpp(12): error C2046: недопустимый вариант выбора
1>main.cpp(13): error C2046: недопустимый вариант выбора
1>
1>СБОЙ построения."
пробовал изменять программу, результата 0.Может пишу не так что-то.Помогите пожалуйста.
countteran вне форума Ответить с цитированием
Старый 04.05.2011, 08:05   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Код:
void main()
{
    int a, n;
    a=2; n=0;
    switch (a); // Току с запятой тут нужно убрать
    {
        case 1: n = 1;
        case 2: n = 2;
        case 3: n = 3;
        default: n = 0; // Если не один из блоков не будет выполнен, переходим к default
    }
    cout<<n;
}

Последний раз редактировалось coNsept; 04.05.2011 в 08:16.
coNsept вне форума Ответить с цитированием
Старый 04.05.2011, 08:42   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

2 countteran
В С++ в отличии от Паскаля ветки выбора "проваливаются", т.е. если в ваше случае зайти по case 1, то выполнятся и все ниже. Ставьте break, как во втором посте.
p51x вне форума Ответить с цитированием
Старый 04.05.2011, 14:23   #6
countteran
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 33
По умолчанию

Ага все понял, спасибо всем! Но есть еще вопросик: как сделать задержку в программе и ожидание нажатия клавиши. Тоесть в первом случае - замена "delay" а во втором - "readkey".
countteran вне форума Ответить с цитированием
Старый 04.05.2011, 14:52   #7
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

для задержки экрана подходит любая функция ввода (cin.get() , cin.getline(),scanf(),gets() и тд)
если же нужно опред время ,то sleep();

kbhit() - возвращает true ,если нажата клавиша .(while (!kbhit()); - ожидание нажатия )
это в conio.h (only windows)

Последний раз редактировалось Hemul; 04.05.2011 в 17:10.
Hemul вне форума Ответить с цитированием
Старый 04.05.2011, 15:20   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Можно ещё и так:

Код:
#include <iostream>
using namespace std;

int main()
{
  system("PAUSE");
        return 0;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 04.05.2011, 15:51   #9
countteran
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
для задержки экрана подходит любая функция ввода (cin.get() , sin.getline(),scanf(),gets() и тд)
если же нужно опред время ,то sleep();

kbhit() - возвращает true ,если нажата клавиша .(while (!kbhit()); - ожидание нажатия )
это в conio.h (only windows)
Теперь объясните - в чем разница между "cin.get() , sin.getline(),scanf(),gets()" и почему отсутствует ожидание нажатия клавиши в данном коде
Код:
#include<iostream>
#include<string>
using namespace std;

void main()
{
	string s;
        cin>>s;
	cout<<s;
	cin.get ();	
}
countteran вне форума Ответить с цитированием
Старый 04.05.2011, 16:48   #10
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

потому што после cin>>s; в cin.get (); идет нажатый enter.
так нужно написать
Код:
	string s;
        cin>>s;
        cin.ignore();
	cout<<s;
	cin.get ();
onewho вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
switch case и if -=Andriushka=- Помощь студентам 1 19.04.2011 21:45
Switch/case (сравнение) I_student Помощь студентам 6 26.09.2010 14:33
switch - case 1 to 5 boris-blade Общие вопросы .NET 1 12.03.2010 07:13
из яваксрипт Switch в Delphi case Kolik317 Общие вопросы Delphi 2 21.11.2009 17:54