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

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

Войти
Регистрация
Восстановить пароль
 
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
#1

Выход из бесконечного цыкла - C++

24.06.2014, 11:43. Просмотров 598. Ответов 7
Метки нет (Все метки)

Проблема с выходом из бесконечного цикла. Если для выхода вводить exit, программа виснет и бесконечно выводит, то, что записано в cout. Если использовать для выхода q всё работает нормально.

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
/* Разработать программу, которая выводит на экран горизонтальную линию из символов. 
Число символов, какой использовать символ, и какая будет линия - вертикальная, или горизонтальная - указывает пользователь.
Предусмотреть при вводе типа линии использование разного регистра (большие и маленькие буквы). Предусмотреть вариант 
многократной работы программы и выход из нее по желанию пользователя (чтобы во время одного запуска можно было выводить
не одну линию). */
#include<iostream>
using namespace std;
void main()
{
    setlocale(LC_CTYPE, "Russian");
    char exit;
    for (;;)        // Используем бесконечный цикл для многократной работы программы.
    {
        char symbol;
        int number, type_l;
        cout<<"Тип линии:   Вертикальная линия - 1. Горизонтальная линия - 2\n";
        cout<<"Введите через пробел тип линии, число символов, \n и символ, которым будет рисоваться линия \n";
        cin>>type_l>>number>>symbol;
        cout<<"\n";
        if (type_l==1)                  // Рисуем линию
        {   
            for (number; number!=0; number--)
            cout<<symbol<<"\n"; 
        }
        else if (type_l==2) 
        {
            for (number; number!=0; number--)
            cout<<symbol;
        }
        else cout<<"Неправильно введен тип линии";
        cout<<"\n Для выхода введите \"exit\" для продолжения работы введите любой другой символ \n";
        cin>>exit;
        if (exit=='exit') break;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2014, 11:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выход из бесконечного цыкла (C++):

Многопоточность, выход из бесконечного цикла c++11 - C++
Всем привет. Я в задачах многопоточности - новичок (начал ей заниматься буквально несколько часов назад), инфу искал, читал, но как-то пока...

Выход из бесконечного цикла по нажатию кнопки. - C++
Привет всем. как можно выйти из такого цикла по нажатию какой любой кнопки (например Esc) int main(){ while(1){ ...

обьясните строение цыкла - C++
нащёл код!!он работает!! но я его не понимаю!!! обьясните цыкл!!! int exp=2; int base=10; int i=1; for (; exp; exp--) i=...

Как понимать условие цыкла while(1) ? - C++
while(1) он выполняется один раз или он вечный ? Просто обычно в круглых скобках указывают какое-то сравнение, а тут просто 1.

вычислить макс число из цыкла - C++
у меня есть такой код мне нада вычислить Максимальное число &quot;y&quot; запарилса уже думать может вы что подскажыте ? #include&lt;iostream.h&gt; ...

Выход из бесконечного цыкла по нажатию CommandButton на форме - VBA
Здраствуйте. Есть форма UserForm1 на ней кнопка CommandButton1 Есть Module1 в нем Sub gt() 1: По нажатию на кнопку этот...

7
Байт
Эксперт C
16144 / 10422 / 1552
Регистрация: 24.12.2010
Сообщений: 19,736
24.06.2014, 11:50 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от EfimKR Посмотреть сообщение
if (exit=='exit') break;
Как твой компилятор вообще это пропускает - непонятно
C++
1
2
3
4
char ex[10];
...
cin >> ex;
if (strcmp(ex, "exit")==0) break;
exit кажется, ключевое слово...
1
Pjeroo
Землянин
34 / 34 / 12
Регистрация: 15.01.2013
Сообщений: 313
24.06.2014, 11:56 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
EfimKR, тип char может содержать только одну букву, а Вы пытаетесь туда запихать все слово. Условие не выполняется, потому что при вводе "exit" в переменную exit записывается только первая буква 'e'.

Добавлено через 1 минуту
Цитата Сообщение от Байт Посмотреть сообщение
exit кажется, ключевое слово...
Да, но компилятор GCC не ругается.
2
Байт
Эксперт C
16144 / 10422 / 1552
Регистрация: 24.12.2010
Сообщений: 19,736
24.06.2014, 11:57 #4
Цитата Сообщение от Pjeroo Посмотреть сообщение
при вводе "exit" в переменную exit записывается только первая буква 'e'
Это понятно. Но вот как компилятор не ругается на 'exit' ??? В одинарных кавычках должон стоять один символ...
1
Pjeroo
Землянин
34 / 34 / 12
Регистрация: 15.01.2013
Сообщений: 313
24.06.2014, 12:01 #5
Цитата Сообщение от Байт Посмотреть сообщение
Но вот как компилятор не ругается на 'exit'
Смею предположить, что не ругается, потому что название exit используется методом exit(), а в данном случае переменная.
1
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
24.06.2014, 12:09  [ТС] #6
Всём спасибо, всё работает, всё понял. =)
0
Байт
Эксперт C
16144 / 10422 / 1552
Регистрация: 24.12.2010
Сообщений: 19,736
24.06.2014, 12:09 #7
Цитата Сообщение от Байт Посмотреть сообщение
exit кажется, ключевое слово...
Простите, тут я не прав. exit - это функция. а не ключевое слово. А ее можно переопределять. Но то, что в одинарных кавычках несколько букв - это странно...

Не по теме:

Впрочем, сие не стоит затяжной дискуссии... Просто лучше такими конструкциями не пользоваться от греха подальше...

0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
24.06.2014, 12:30 #8
Цитата Сообщение от Байт Посмотреть сообщение
Но то, что в одинарных кавычках несколько букв - это странно...
Это multicharacter literal.
см. например тут
P.S. обсуждалось уже несколько на раз на форуме на моей памяти.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2014, 12:30
Привет! Вот еще темы с ответами:

Выход из бесконечного цикла - PHP
я начинаю изучать PHP, задача такая: есть бесконечный цикл отправки POST запроса как сделать чтоб при нажатии к примеру кнопки выход с...

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

Выход из бесконечного цикла - Pascal
Здравствуйте Посмотрите вот такой интересный код s := 1; i := 1; repeat s := s/2; inc(i); writeln( i:2,'...

Организовать выход из бесконечного цикла - Assembler
Ув. знатоки ассемблера. Сдаю лаб-ру, препод спрашивает, что если контроллер кл-ры накрылся, и как выйти из цикла. Вот сам код. IN AL 64H ...


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

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

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