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

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

Войти
Регистрация
Восстановить пароль
 
xAndeRx
3 / 3 / 0
Регистрация: 25.10.2012
Сообщений: 208
#1

Прерывание цикла, через клавишу Esc - C++

21.11.2014, 18:26. Просмотров 241. Ответов 4
Метки нет (Все метки)

Мне нужно в прервать цикл при нажатии клавиши Esc.
Делаю через getch(). Все работает, но есть одна проблема, в каждом прогоне цикла нужно 2 раза вводить один и тот же элемент массива, чтобы в 1-ый раз проверялся getch, а во второй это элемент вносился в массив.
Как убрать это? Но при этом сохранить проверку на Esc.

Код:
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n;
    cout << "Введите размерность массива: ";
    cin >> n;
    float mas[n];
    int i=0,k=0;
    int positive,kratnie;
    cout << "Вводите элементы массива." << endl;
    int a;
    do
    {
        cin >> mas[i];
        if (mas[i]>0) //Проверка на положительность
            positive++;
 
        if (mas[i]<50)
            kratnie++;
 
        if (mas[i]==-100)
            break;
        i++;
        k++;
    }
    while ((a=getch())!=27);
    if (positive>5)
        cout << "Первое условие ложное, положительных цифр больше чем 5." << endl;
    else if (positive<5)
        cout << "Первое условие правдивое, положительных цифр не больше чем 5." << endl;
 
    if (kratnie % 4 == 0)
        cout << "Второе условие правдивое, количество элементов, которые не больше 50,55, кратно четырем.";
    else if (kratnie % 4 != 0)
        cout << "Второе условие ложное, количество элементов, которые не больше 50,55, не кратно четырем.";
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 18:26     Прерывание цикла, через клавишу Esc
Посмотрите здесь:

Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу Esc. C++
Прерывание бесконечного цикла с возвратом значения нажатой клавиши в main() C++
C++ Прерывание программы по ESC C++
Прерывание цикла! C++
Завершение бесконечного цикла через определенное время C++
Числовой ряд через 3 цикла C++
C++ Прерывание цикла по условию
C++ Прерывание цикла и выполнение его вручную
как написать данную прогу через два цикла C++
C++ Как в switch обработать клавишу Esc?
C++ Сделать таймер, чтобы через указанное количество времени срабатывало прерывание и выполнялась заданная функция
C++ Имитация цикла for через рекурсию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,467
Записей в блоге: 2
Завершенные тесты: 1
21.11.2014, 18:29     Прерывание цикла, через клавишу Esc #2
GetAsyncKeyState в помощь
xAndeRx
3 / 3 / 0
Регистрация: 25.10.2012
Сообщений: 208
21.11.2014, 19:11  [ТС]     Прерывание цикла, через клавишу Esc #3
Можно подробнее? Погуглил и до конца не понял, что именно дает функция GetAsyncKeyState и как её применить к моему случаю.
nmcf
4473 / 3811 / 1287
Регистрация: 14.04.2014
Сообщений: 14,965
21.11.2014, 19:47     Прерывание цикла, через клавишу Esc #4
Она показывает нажата ли клавиша в момент обращения.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,467
Записей в блоге: 2
Завершенные тесты: 1
22.11.2014, 07:23     Прерывание цикла, через клавишу Esc #5
Стрелки клавиатуры в консоли
С Esc аналогично
Yandex
Объявления
22.11.2014, 07:23     Прерывание цикла, через клавишу Esc
Ответ Создать тему
Опции темы

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