Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
JAson13
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 36
#1

Возврат к началу switch - C++

02.05.2014, 22:42. Просмотров 1188. Ответов 22
Метки нет (Все метки)

Здравствуйте.

Есть программа, включающая в себя
C++
1
2
3
4
5
6
7
8
...
switch(x)
{
case 1: {};
case 2: {};
case n: {};
default: {};
}
Как сделать так, чтобы этот switch выполнялся до тех пор, пока не выберется один из case.

Например, есть меню из 5 пунктов. Как сделать так, чтобы при вводе числа 6 программа не закрывалась, а снова выводила это меню.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2014, 22:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возврат к началу switch (C++):

Оптимальная конструкция switch-case-while / while-switch-case - C++
Имеется конструкция типа: switch() { case 1: while() { ... }

Как вернуться к началу функции? - C++
сем доброго времени суток. Подскажите, как сделать так, чтобы при одном из условий функция начиналась с начала. Break прерывает и идет...

Найти ближайшую к началу координат точку - C++
#include<stdio.h> int main(void) { char A,B; int x1,y1,x2,y2; printf("Input A(x1)="); scanf("%i",&x1); ...

Найти какая из точек ближе к началу координат - C++
В чем ошибка? #include <iostream> #include <conio.h> #include <math.h> using namespace std; void main() { ...

какая из точек расположена ближе к началу координат (if) - C++
Даны две точки A(x1,y1) и B(x2,y2). Написать программу, которая определяет, какая из точек расположена ближе к началу координат. Данные...

Определить, принадлежит ли треугольник началу координат или нет - C++
Нужно дописать условие в оператор If такое чтобы, найти принадлежит ли треугольник началу координат или нет. то есть внутренности...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
02.05.2014, 22:44 #2
JAson13, чем цикл не устраивает?
0
JAson13
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 36
02.05.2014, 22:54  [ТС] #3
Ты имеешь ввиду for вначале добавить?
Или while?
0
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
02.05.2014, 22:55 #4
Цитата Сообщение от JAson13 Посмотреть сообщение
Ты имеешь ввиду for вначале добавить?
Или while?
да любой, но обычно для таких целей while или do...while
1
JAson13
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 36
02.05.2014, 23:00  [ТС] #5
Хорошо, спасибо, попробую
0
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
02.05.2014, 23:04 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main () {
    int x=0;
    bool run=true;
 
    while(run) {
        run=false;
        std::cin >> x;
 
        switch(x) {
            case 1: { break; };
            case 2: { break; };
            case 3: { break; };
            default: { run=true; };
        }
    }
 
    return 0;
}
0
Tulosba
:)
Эксперт С++
4395 / 3238 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
03.05.2014, 00:31 #7
Цитата Сообщение от JAson13 Посмотреть сообщение
до тех пор, пока не
это и называет "цикл".
TrueBit, я бы выделил проверку в отдельную функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
bool accept(int x)
{
    switch(x) 
    {
        case 1: 
        case 2: 
        case 3: return true;
        default: return false;
    }
}
 
int main() 
{
    int x = 0;  
    while( std::cin >> x, !accept(x) );
    return 0;
}
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
03.05.2014, 00:37 #8
C++
1
    while( std::cin >> x, !accept(x) );
так писать очень плохо! Предыдущий пример будет работать быстрее! Такой стиль программирования ведет к переписыванию кода после про гонки его через профилировщик на наличие hot points
0
Tulosba
:)
Эксперт С++
4395 / 3238 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
03.05.2014, 00:41 #9
Цитата Сообщение от stawerfar Посмотреть сообщение
после про гонки его
пруфы в студию.

Не по теме:

И словарик бы Вам не помешал.

0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
03.05.2014, 00:48 #10
Не по теме:

И словарик бы Вам не помешал. Это бы вам сообразительности не помешало бы,я пишу с планшета а он лезет со своею true орфографией мне просто лень его иногда исправлять
0
Tulosba
:)
Эксперт С++
4395 / 3238 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
03.05.2014, 00:56 #11
Цитата Сообщение от stawerfar Посмотреть сообщение
я пишу с планшета
да хоть с утюга, по теме есть что сказать или тоже планшет виноват?
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
03.05.2014, 01:01 #12
Посмотри свою реплику и задай этот вопрос себе
0
DrOffset
7138 / 4279 / 964
Регистрация: 30.01.2014
Сообщений: 7,073
03.05.2014, 01:06 #13
Чего спорить-то, возьмите асмо-код и гляньте чего там быстрее.
Я не глядя предположу, что будет почти одинаково. Или даже полностью одинаково.
0
Tulosba
:)
Эксперт С++
4395 / 3238 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
03.05.2014, 01:07 #14
Цитата Сообщение от stawerfar Посмотреть сообщение
Посмотри свою реплику и задай этот вопрос себе
stawerfar, я с Вами в одной песочнице не играл, не надо мне тыкать.
Еще раз: по теме есть что сказать?
0
DrOffset
7138 / 4279 / 964
Регистрация: 30.01.2014
Сообщений: 7,073
03.05.2014, 01:18 #15
Цитата Сообщение от Tulosba Посмотреть сообщение
по теме есть что сказать?
Можно я скажу?
Я щас проверил (mingw 4.7.2), код полностью эквивалентный:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    push    ebx
    sub esp, 40
    mov DWORD PTR [esp+28], 0
    lea ebx, [esp+28]
L3:
    mov DWORD PTR [esp], ebx
    mov ecx, OFFSET FLAT:__ZSt3cin
    call    __ZNSirsERi
    push    eax
    mov eax, DWORD PTR [esp+28]
    dec eax
    cmp eax, 2
    ja  L3
    xor eax, eax
    add esp, 40
    pop ebx
    ret
и
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    push    ebx
    sub esp, 40
    mov DWORD PTR [esp+28], 0
    lea ebx, [esp+28]
L9:
    mov DWORD PTR [esp], ebx
    mov ecx, OFFSET FLAT:__ZSt3cin
    call    __ZNSirsERi
    push    edx
    mov eax, DWORD PTR [esp+28]
    dec eax
    cmp eax, 2
    ja  L9
    xor eax, eax
    add esp, 40
    pop ebx
    ret
Так что вариант Tulosba ничем не хуже. А на мой взгляд даже лучше, ибо divide et impera.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2014, 01:18
Привет! Вот еще темы с ответами:

На плоскости заданы 2 точки, определить какая ближе к началу - C++
помогите сделать этот код с функцией #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { double x1,...

Определить которая из заданных точек находится ближе к началу координат - C++
Даны 2 точки:А(x1;y1) и В(x2;y2). Составить алгоритм,определяющий которая из точек находится ближе к началу координат.

Определить какая из точек ближе всего лежит к началу координат - C++
Помогите решить задачи. 1)Заданы 3 точки р1(х1,у1),р2(х2,у2),р3(х3,у3).Определить какая из точек ближе всего лежит к началу...

Определить какая из точек ближе всего лежит к началу координаты - C++
Заданы 3 точки р1(х1,у1),р2(х2,у2),р3(х3,у3).Определить какая из точек ближе всего лежит к началу координаты.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.05.2014, 01:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru