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

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

Восстановить пароль Регистрация
 
xAndeRx
3 / 3 / 0
Регистрация: 25.10.2012
Сообщений: 205
21.11.2014, 18:26     Прерывание цикла, через клавишу Esc #1
Мне нужно в прервать цикл при нажатии клавиши 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
21.11.2014, 18:29     Прерывание цикла, через клавишу Esc #2
GetAsyncKeyState в помощь
xAndeRx
3 / 3 / 0
Регистрация: 25.10.2012
Сообщений: 205
21.11.2014, 19:11  [ТС]     Прерывание цикла, через клавишу Esc #3
Можно подробнее? Погуглил и до конца не понял, что именно дает функция GetAsyncKeyState и как её применить к моему случаю.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,579
21.11.2014, 19:47     Прерывание цикла, через клавишу Esc #4
Она показывает нажата ли клавиша в момент обращения.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
22.11.2014, 07:23     Прерывание цикла, через клавишу Esc #5
Стрелки клавиатуры в консоли
С Esc аналогично
Yandex
Объявления
22.11.2014, 07:23     Прерывание цикла, через клавишу Esc
Ответ Создать тему
Опции темы

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