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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
#1

Выход из двойного цикла - C++

28.01.2014, 15:40. Просмотров 1513. Ответов 25
Метки нет (Все метки)

Как выйти при нажатии определенной кнопки из двойного цикла:
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
#include<conio.h>
#include<iostream>
#include<cmath>
#include<cstring>
#include<cctype>
using namespace std;
int main(){
    setlocale(LC_ALL, "Russian");
    const int N = 20;
    char Exit;
    cout<<"\t\t Ввод данных о машинах(до 20 машин)\n\n";
    for(int i(0); i<N; i++){
        cout<<"\t\tДанные для "<<i+1<<" машины\n\n";
        for(int j(0); j<N; j++){
                Exit = _getch();
                if(Exit == '.'){
                break;}
        }
    }
    cout<<"\n\n\t\tПроизошло прекращение ввода данных :)";//Строчка проверки
    cout<<"\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}
При нажатии '.' происходит выход из цикла for(int j(0); j<N; j++), а нужно, чтобы выходил из обоих сразу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 18:00  [ТС]     Выход из двойного цикла #21
programina, Непременно
gunslinger
случайный прохожий
1117 / 735 / 187
Регистрация: 20.07.2013
Сообщений: 2,016
28.01.2014, 18:11     Выход из двойного цикла #22
C++
1
2
3
4
5
if(Exit == '.')
{
  i = N;
  break;
}
Alex5
1038 / 701 / 102
Регистрация: 12.04.2010
Сообщений: 1,763
28.01.2014, 18:49     Выход из двойного цикла #23
Можно использовать исключения.
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
 //  Ввод данных 
 
    enum Codes { STOP_INPUT, STOP_2 , STOP_3 }; // в исключении используем тип  Codes 
 
    try
    {
        for(int i(0); i<N; i++){
            cout<<"\t\tДанные для "<<i+1<<" машины\n\n";
            for(int j(0); j<N; j++){
                Exit = _getch();
 
                if(Exit == '.')
                {
                    throw( STOP_INPUT ); /* вместо break используем throw  */
                    //break;  
                }
            }
        }
    }
    catch( Codes excep )   /* обработка исключения */
    {
        switch( excep )
        {
        case STOP_INPUT:
            cout<<"\n\n\t\tПроизошло прекращение ввода данных :)";
            break;
        // case ... : // если необходимо, можно предусмотреть другие варианты 
        //  break;
        }
    }
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
29.01.2014, 14:18  [ТС]     Выход из двойного цикла #24
Alex5, пожалуй использую понятные мне алгоритмы
P.S. Тему исключений не проходил
SatanaXIII
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
29.01.2014, 15:27     Выход из двойного цикла #25
Ну давайте порассуждаем.
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
#include<conio.h>
#include<iostream>
#include<cmath>
#include<cstring>
#include<cctype>
using namespace std;
int main(){
    setlocale(LC_ALL, "Russian");
    const int N = 20;
    char Exit;
    cout<<"\t\t Ввод данных о машинах(до 20 машин)\n\n";
    for(int i(0); i<N; i++){
        cout<<"\t\tДанные для "<<i+1<<" машины\n\n";
        for(int j(0); j<N; j++){
                Exit = _getch();
                if(Exit == '.'){
                goto halt;}
        }
    }
    halt:
    cout<<"\n\n\t\tПроизошло прекращение ввода данных :)";//Строчка проверки
    cout<<"\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 17:03     Выход из двойного цикла
Еще ссылки по теме:

Выход из цикла C++
C++ Как сделать выход из программы при условии нажатия двойного ввода
C++ Преждевременный выход из цикла
C++ Выход из цикла из консоли
С++ Выход из цикла C++

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

Или воспользуйтесь поиском по форуму:
daslex
29.01.2014, 17:03     Выход из двойного цикла
  #26

Не по теме:

Для перехода сверху вниз, при выходе из кучи вложенных друг в друг циклов, оператор goto использовать нормально и к признакам дурных манер это не имеет никакого отношения. Экономится память, сокращаются такты, сокращается листинг, не нарушается чтение кода, такое построение кода никак не мешает отладке, уменьшается вероятность ошибок при проверках обработки цикла. Дурной признак - это когда делаешь так как сложнее или что-то такое, что способствует осложнению.

Не хотим функции - используйте goto
Не хотите goto - используйте функции
использование проверок, которых можно избежать, действительно плохо.

Yandex
Объявления
29.01.2014, 17:03     Выход из двойного цикла
Ответ Создать тему
Опции темы

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