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

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

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

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

28.01.2014, 15:40. Просмотров 1788. Ответов 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
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
28.01.2014, 15:53 #2
Можно так
C++
1
2
3
4
5
6
7
8
9
10
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;}
        }
        if(Exit == '.'){
                break;}
    }
1
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
28.01.2014, 15:54 #3
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 == '.'){
                goto M;}
        }
    } M: ;
    cout<<"\n\n\t\tПроизошло прекращение ввода данных :)";//Строчка проверки
    cout<<"\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
28.01.2014, 15:55 #4
Оформить цикл в функцию и вставить return.
1
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 16:05  [ТС] #5
Цитата Сообщение от Ilot Посмотреть сообщение
Оформить цикл в функцию и вставить return.
Не хотелось бы вставлять функцию в функцию лишний раз (у меня в коде это функция ввода )

Добавлено через 54 секунды
jurok_85, блин, такой простой способ не заметил
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
28.01.2014, 16:07 #6
еще один путь без лишних переменных
C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<10;i++)
 {
   int j;   
    for(j=0;j<10;j++)
        if(xz==xy)//выполнилось какоето условие
           break;  // выходим из внутреннего цикла
   if(j<10)// если j<10  значит вышли раньше времени из внутреннего цикла
    break; // выходим из внешнего
 }
0
0x10
2479 / 1654 / 248
Регистрация: 24.11.2012
Сообщений: 4,099
28.01.2014, 16:07 #7
Цитата Сообщение от Xopecc Посмотреть сообщение
Не хотелось бы вставлять функцию в функцию лишний раз
Это лучше, чем дублировать проверки.
0
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 16:16  [ТС] #8
Цитата Сообщение от 0x10 Посмотреть сообщение
Это лучше, чем дублировать проверки.
Так-с, возник еще один вопрос... Нужно сделать обнуление всех данных одного элемента, если введены не полные данные, но был прекращен ввод.
0
RussDragon
12 / 12 / 1
Регистрация: 08.04.2012
Сообщений: 81
28.01.2014, 16:20 #9
Цитата Сообщение от ValeryS Посмотреть сообщение
еще один путь без лишних переменных
C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<10;i++)
 {
   int j;   
    for(j=0;j<10;j++)
        if(xz==xy)//выполнилось какоето условие
           break;  // выходим из внутреннего цикла
   if(j<10)// если j<10  значит вышли раньше времени из внутреннего цикла
    break; // выходим из внешнего
 }
Эмм... У вас тут только if(j=0;j<10;j++) во внутреннем цикле, а break выполниться при первом же проходе, да и при том, из "главного".
0
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 16:21  [ТС] #10
RussDragon, тоже это заметил
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
28.01.2014, 16:33 #11
Цитата Сообщение от Xopecc Посмотреть сообщение
Нужно сделать обнуление всех данных одного элемента, если введены не полные данные, но был прекращен ввод.
обнуляешь запись(элемент)
вводишь данные во временную переменную(структуру)
если ввод корректен то копируешь из временной переменной в нужный элемент

Добавлено через 11 минут
Цитата Сообщение от RussDragon Посмотреть сообщение
Эмм... У вас тут только if(j=0;j<10;j++) во внутреннем цикле, а break выполниться при первом же проходе, да и при том, из "главного".
при проходе внутреннего цикла
j будет равно 10
при инициализации цикла j равно 0
потом десять раз j++
в результате j<10 ЛОЖЬ в тело не входим бряк не срабатывает
теперь если сработал внутренний бряк
j будет меньше 10
значит входим в условие и выходим из внешнего цикла
могу написать со скобками чтобы было понятно что куда
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for(int i=0;i<10;i++)
{
  int j;   // обявлена вне цикла
    for(j=0;j<10;j++) // здесь j меняется от 0 до 10
        {
         if(xz==xy)//выполнилось какоето условие
           {
             break;  // выходим из внутреннего цикла
            }
         }
  // а вот здесь j будет иметь значения от 0 до 10
 // она все еще видна поскольку объявлена вне цикла
  // если цикл отработал нормально то j 10
  // если нет то j имеет значения 0-9
   if(j<10)// если j<10  значит вышли раньше времени из внутреннего цикла
        { 
        break; // выходим из внешнего
        }
 }
0
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
28.01.2014, 16:47  [ТС] #12
ValeryS, Так запутано и не запутано сразу, что путаешься, где не путался, и распутываешься, где путался
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
28.01.2014, 16:51 #13
Цитата Сообщение от Xopecc Посмотреть сообщение
Не хотелось бы вставлять функцию в функцию лишний раз (у меня в коде это функция ввода )
Так вот и сделайте ф-ю ввода. Я же об этом и говорю. А пользование оператором goto есть плохой признак.
0
Байт
Диссидент
Эксперт C
16571 / 10841 / 1651
Регистрация: 24.12.2010
Сообщений: 20,958
28.01.2014, 16:53 #14
C++
1
2
3
4
for (j=0; j<10; j++) {
  if (...) break;
}
for(; j<10; j++) x[j] = 0;
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 16:53 #15
C++
bool bExit = false;
 
while(!bExit)
{
  while(1)
  {
    if(GetAsyncKeyState(VK_ESCAPE)) 
    {
      bExit = true;
      break;
    }
 
    // ...
 
  }
}
0
28.01.2014, 16:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 16:53
Привет! Вот еще темы с ответами:

Автоматический выход из цикла. - 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++
В консольном приложении пользователь запускает цикл, выход из которого возможен только по инициативе пользователя. Как реализовать? ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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