Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 2

Как вернуться в начало выполнения цикла while при возникновении условия?

11.10.2022, 01:26. Показов 2834. Ответов 6
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Пользователь вводит переменную, которая в последствии используется в switch. Нужно проверить эту переменную, чтобы она подходила под условие. Вопрос: как вернуться в начало цикла while при возникновении условия. Пробовала exit, break, return - программа заканчивается полностью, а если ввести continue, то строчки выводятся бесконечно. Подскажите, пожалуйста, как вернуться к вводу значения без завершения программы?

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
45
46
47
48
49
int main()
{
    setlocale(LC_ALL, "Russian");
    Pryamougolnik ObjectA;     // Создание объекта без параметров (будет использован конструктор по умолчанию)
    int control;
 
    while(true)
    {
        cout << "Меню программы: \n 1 - Ввод координат прямоугольника \n 2 - Вывод значений координат прямоугольника \n 3 - Перемещение прямоугольника \n 4 - Изменение размера прямоугольника \n 5 - Очистка консоли \n 6 - Выход из программы \n" << endl;
        cout << "Выберите интересующий вас пункт меню (введите любое из чисел от 1 до 6):" << endl;
        cout << "> ";
        cin >> control;
 
            if (control > 6  control < 1  !control || !(control == round(control)))
            {
                cout << "Введено некорректное значение - попробуйте снова!!!" << endl << endl << endl;
                exit(1);
            }
            switch (control)
            {
            case 1:
                ObjectA.Input();
                break;
 
            case 2:
                ObjectA.Result();
                break;
 
            case 3:
                ObjectA.Peremeshenie();
                break;
 
            case 4:
                ObjectA.Size();
                break;
 
            case 5:
                ObjectA.Ochistka();
                break;
 
            case 6:
                cout << "Программа успешно завершена :)" << endl << endl;
                system("pause");
                return 0;
            }
    }
    system("pause");
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2022, 01:26
Ответы с готовыми решениями:

Как вернуться в начало условия if?
Здравствуйте,уважаемые. #!/usr/bin/python3 # -*- coding:utf-8 -*- io = input('Въезд(i) или выезд(o)?: ') if io == 'i': ...

Как вернуться в начало цикла?
Здравствуйте, пишу программу, которая по нажатию кнопок от 1 до 5 будет выводить определенный график. Но это все работает только один раз,...

Как вернуться в начало цикла while?
У меня в коде такая структура while ( game == 1) //code// level = 2 while(game == 2 ) //code// level = 3 while (game ==...

6
 Аватар для Pphantom
2249 / 1508 / 694
Регистрация: 17.03.2022
Сообщений: 4,822
11.10.2022, 01:44
А почему бы в условии цикла не проверить, что control не равен 6? Предварительно записав в него какое-нибудь другое значение, чтобы в первый раз условие выполнилось. Затем вспомнить, что в switch возможен вариант default.

Ну и... вы всерьез хотите сказать, что вот это в строке 14 у вас скомпилировалось?
0
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 2
11.10.2022, 01:55  [ТС]
Да, 14 строка компилируется корректно и там как раз происходит проверка на то, что введённое число в пределах от 1 до 6. В switch тоже проблемы нет, проблема именно в if: как вернуться в начало while, не завершая при этом программу, а в моём коде, при попадании в условие if программа завершается.
0
Злостный нарушитель
 Аватар для Verevkin
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,265
11.10.2022, 09:18
Цитата Сообщение от defunctus Посмотреть сообщение
Как вернуться в начало выполнения цикла while при возникновении условия?
C++
1
2
3
4
5
6
7
8
while (...)
{
  // код
  
  if (условие) continue;
  
  // код
}
1
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
11.10.2022, 11:08
Code
1
2
3
4
5
6
7
 cin >> control;
 
            while (control > 6  control < 1  !control || !(control == round(control)))
            {
                cout << "Введено некорректное значение - попробуйте снова!!!" << endl << endl << endl;
                cin >> control;
            }
0
Заблокирован
11.10.2022, 15:12
Цитата Сообщение от defunctus Посмотреть сообщение
Да, 14 строка компилируется корректно
Где то в далекой, далекой галактике
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
11.10.2022, 18:31
Цитата Сообщение от SmallEvil Посмотреть сообщение
Где то в далекой, далекой галактике
SmallEvil, вот тут:
Цитата Сообщение от defunctus Посмотреть сообщение
C++
1
2
3
4
cout << "Меню программы: \n 1 - Ввод координат прямоугольника \n 2 - Вывод значений координат прямоугольника \n 3 - Перемещение прямоугольника \n 4 - Изменение размера прямоугольника \n 5 - Очистка консоли \n 6 - Выход из программы \n" << endl;
        cout << "Выберите интересующий вас пункт меню (введите любое из чисел от 1 до 6):" << endl;
        cout << "> ";
        cin >> control;
если стандартный ввод испорчен, то не будет ей счастья. Ни в какой галактике. Нужно флешить, игнорить и пробовать восстановить поток, если я правильно не понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2022, 18:31
Помогаю со студенческими работами здесь

Как вернуться в начало цикла
Есть ли команда которая возвращает в начало цикла? К примеру есть цикл do while в нем условие if если оно не выполняется то вернуть в...

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

Как вернуться из цикла в самое-самое начало программы?
Привет. Нужно чтобы пользователь НЕ ПРАВИЛЬНО ввёл то, что требует программа от него. И вся суть в том, если пользователь введёт НЕ...

Как в паскале вернуться в начало программы при операторе case
Добрый день и с новым годом! У меня ещё с прошлого года остался вопрос как вернуться на действие назад или в самое начало программы ...

Как остановить цикл сообщением об ошибке при делении на ноль и вернуться в начало программы
Добрый день Подскажите пожалуйста как завершить цикл в случаи деления на ноль, вывести сообщение об ошибке и вернуться на начало...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru