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

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

11.10.2022, 01:26. Показов 2967. Ответов 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
2326 / 1569 / 722
Регистрация: 17.03.2022
Сообщений: 5,067
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
10642 / 5793 / 1278
Регистрация: 12.03.2015
Сообщений: 26,739
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
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
11.10.2022, 15:12
Цитата Сообщение от defunctus Посмотреть сообщение
Да, 14 строка компилируется корректно
Где то в далекой, далекой галактике
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 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
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru