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

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

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

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

28.01.2014, 15:40. Просмотров 1687. Ответов 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++), а нужно, чтобы выходил из обоих сразу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 15:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выход из двойного цикла (C++):

Как сделать выход из программы при условии нажатия двойного ввода - C++
Люди добрые помогите ни как не могу сообразить как сделать выход из программы при условии что пользователь нажал два раза ввод (Enter)....

Счётчик двойного цикла, без дополнительных переменных - C++
как в двойном цикле, for(int i = 0; i &lt; 5; ++i) for(int j = 0; j &lt; 5; ++j) cout &lt;&lt; &lt;&lt; endl; без объявления дополнительных...

Выход из цикла - C++
Доброго времени суток. Подскажите, пожалуйста как сделать выход из цикла при нажатии 0 в меню. Пытался так на ESC, но не выходит. ...

Выход из цикла - C++
Ув. программисты я пишу крестики-нолики, но возникла некоторая проблема с циклами! for (t=0;t&lt;100;t++) { for...

С++ Выход из цикла - C++
Есть цикл, написанный в дополнительной функции. Нужно вывести сумму нескольких введенных чисел, если подходящей суммы нет,то вывести...

Выход из цикла - C++
Есть цикл. Он выполняется. Долго. Пока он выполняется я нажимаю Esc и он становится на паузу. Как осуществить? Добавлено через 10...

25
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
28.01.2014, 16:57 #16
Цитата Сообщение от Xopecc Посмотреть сообщение
Не хотелось бы вставлять функцию в функцию лишний раз (у меня в коде это функция ввода )

Добавлено через 54 секунды
jurok_85, блин, такой простой способ не заметил
замечательный способ предложил Ilot ... код становится понятнее и проще
0
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 17:16  [ТС] #17
Ilot, собственно функции ввода это и есть... недописанная(ненадолго отложил код)
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
struct Auto{
    char Marka [30];
    char Model [30];
    int MakeYear;
    char Color [20];
    double price;
    double rating;
};
void InPut(Auto x)
{
    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Произошло прекращение ввода данных :)";
 
}
P.S.Часть кода...

Добавлено через 2 минуты
programina,
C++
1
if(GetAsyncKeyState(VK_ESCAPE))
Это проверяется нажатие клавиши Escape?
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 17:28 #18
Цитата Сообщение от Xopecc Посмотреть сообщение
programina,
Код C++
1
if(GetAsyncKeyState(VK_ESCAPE))
Это проверяется нажатие клавиши Escape?
Да, но это работает только в ОС Виндовс.
0
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 17:31  [ТС] #19
programina, мне пока другого не нужно
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 17:38 #20
Xopecc, тогда не забудьте подключить
C++
#include <windows.h>
0
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 18:00  [ТС] #21
programina, Непременно
0
gunslinger
случайный прохожий
1137 / 755 / 192
Регистрация: 20.07.2013
Сообщений: 2,081
28.01.2014, 18:11 #22
C++
1
2
3
4
5
if(Exit == '.')
{
  i = N;
  break;
}
0
Alex5
1056 / 720 / 108
Регистрация: 12.04.2010
Сообщений: 1,847
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;
        }
    }
0
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
29.01.2014, 14:18  [ТС] #24
Alex5, пожалуй использую понятные мне алгоритмы
P.S. Тему исключений не проходил
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 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;
}
0
daslex
29.01.2014, 17:03     Выход из двойного цикла
  #26

Не по теме:

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

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 17:03
Привет! Вот еще темы с ответами:

Автоматический выход из цикла. - C++
имеется код: int main() { square s; //объект класса unsigned char ch; /*цикл 1*/ while(true){ ...

Выход из тела цикла - C++
Имеется цикл: for(;;) for(;;) for(;;) for(;;) for(;;) cout&lt;&lt;2; Нужно выйти из его тела, используя...

Преждевременный выход из цикла - C++
#include &lt;iostream&gt; using namespace std; void enter_new_note (); void show_sheldue (); int x = 1; char Monday , Thuesday...

Выход из цикла из консоли - C++
В консольном приложении пользователь запускает цикл, выход из которого возможен только по инициативе пользователя. Как реализовать? ...


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

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

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