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

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

Войти
Регистрация
Восстановить пароль
 
LAKALA
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5
#1

Как сделать ввод без enter? - C++

23.03.2014, 01:31. Просмотров 899. Ответов 2
Метки нет (Все метки)

Есть готовый код. нужно чтобы на ввод маркера стояло ограничение. Идея:чтобы при вводе, сразу перепрыгивала на ввод искомого символа. getchar() не работает(( помогите. куда его нужно правильно поставить?
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
//структура с используемой строкой и маркером
struct String
{
    char symArray[20];
    char marker;
};
 
//поиск координаты вхождения символа в строку
void searchSym( unsigned int mode, int *result, const char &searchingSym, const String &str )
{
    result[0] = -1;                             //"устанавливаем значение не найдено"
    if( mode == 3 ) result[1] = -1;             //Будет изменяться, если символ найдется
    for( unsigned int i = 0, index = 0; i < 20; ++i )
    {
        if( str.symArray[i] == searchingSym )
        {
            result[ index++ ] = i;
            if( mode == 1 ) break;              //нашли координату левого вхождения
            else if( mode == 2 ) --index;       //в зависимости от режима переходим к требуемому элементу в массиве результатов
            else if( mode == 3 && index == 1 ) result[ index ] = i;
            else if( mode == 3 && index == 2) --index;
        }
        if( str.symArray[i] == str.marker ) break;//"попали" на маркер
    }
}
int main()
{
    setlocale(LC_ALL, "russian");
 
    int result[2], mode, q = 1;
    String str;
    char searchingSym;
 
    for(;;)
    {
        cout << "Введите строку"<< endl;
        cin >> str.symArray;
        while(1)
        {
            /*str.marker=getch();
            cout<<char(str.marker)<<"\n";*/
        cout << "Введите маркер"<<endl;
        str.marker=getchar();
        
        /*cin >> str.marker;*/
        bool take=false;
        for(int i=0; str.symArray[i] !='\0'; i++)
        {
            if(str.marker==str.symArray[i])
            {
                take=true;
                break;
            }
        }
        if(take)
        {
            break;
        }
        else
        { 
            cout<<"Неверный маркер."<<endl;
            fflush(stdin);
        }
        }
 
        cout << "Введите искомый символ"<< endl;
        cin >> searchingSym;
 
        cout << " Выберите желаемое действие" << endl;
        cout << " 1) Координаты левого вхождения в строку" << endl;
        cout << " 2) Координаты правого вхождения в строку"<< endl;
        cout << " 3) Координаты левого и правого вхождения в строку"<< endl;
        cin >> mode;
 
        searchSym(mode, result, searchingSym, str);
        //Вывод результата в зависимост от заданного режима
        if( mode == 1)
            {
                if (result[0] != -1 ) cout << " Координата :" <<result[0]<<endl;
                else cout <<"символ отсутствует в строке"<<endl;
            }
 
        if ( mode == 2)
            {
                if (result[0] != -1 ) cout << " Координата :" <<result[0]<<endl;
                else cout <<"символ отсутствует в строке"<<endl;
            }
        if ( mode == 3)
            {
 
                {
                    if (result[0] != -1 )
                    {
                        cout << " Левая координата :" <<result[0]<<endl;
                        if (result[0] != result[1])
                        {
                            if (result[1] != -1) cout << " Правая координата :" << result[1]<< endl;
                        }
                        else cout << " Правая координата :" << result[0]<< endl;
                    }
                    else cout <<"символ отсутствует в строке"<<endl;
            }
        //повтор
        cout <<"Выполнить еще раз? (1/0)"<< endl;
        cin >> q;
        if (q == 0) return 0;
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2014, 01:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать ввод без enter? (C++):

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

Ввод данных без нажатия Enter - C++
Здравствуйте. Допустим, у меня есть такое: char ololo; cin &gt;&gt; ololo; Тут мне надо ввести символ и нажать Enter. Как сделать...

Ввод данных без нажатия «Enter» - C++
Добрый день Интересует такой вопрос После ввода числа нужно нажимать клавишу ENTER Как можно добится того, чтобы после ввода числа...

Ввод цифры без нажатия Enter'a, использование _getch() - C++
доброго времени суток. проблема вот в чем: написал простенькую программу, она высчитывает дискриминант и корни уравнения. попробовал...

Сделать так, чтобы ввод не происходил при нажатии Enter - C++
Как сделать что бы cout &lt;&lt; (letter); не срабатывал после нажатия enter? Когда вставляю перед ним cin.ignore('/n'); цикл перестает...

Как сделать ввод матрицы из файла без указания размера - C++
Я сделал ввод матрицы из файла с указанием ее размера(массива),а как сделать ввод матрицы из файла без указания размера (строк и столбцов)....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.03.2014, 02:04 #2
Можно использовать _getch() для захвата нажатия кнопки или же _getche() для того же самого плюс печать этого символа в консоль.
LAKALA
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5
23.03.2014, 02:22  [ТС] #3
Простите, и куда я должна его поставить. куда ни вставляла и до этого, ничего не выходит(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 02:22
Привет! Вот еще темы с ответами:

Как сделать закрытие приложения по нажатию ENTER? (Java) - C++
Господа! Нужно сделать так, чтобы при нажатии ENTER, страница закрывалась. ВСЕ идей сюда =). Пасиба заранее.

Как сделать, чтобы сочетание клавиш 'enter'+'space' выходили из консоли - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { char c; cout&lt;&lt;&quot;test\n&quot;; ...

Как сделать, чтобы диалоговое окно не закрывалось при нажатии клавиши ENTER? - C++
Как сделать, чтобы диалоговое окно не закрывалось при нажатии клавиши ENTER? (если можно то, код)

Неработает проверка на ввод enter - C++
По логке кода, при нажатии на ентер цыкл должен оборватся, но этого не происходит, почему? char login; char pass; char fio; ...


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

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

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