Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5

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

23.03.2014, 01:31. Показов 5909. Ответов 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;
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2014, 01:31
Ответы с готовыми решениями:

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

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

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

2
 Аватар для Arkaniy
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
23.03.2014, 02:04
Можно использовать _getch() для захвата нажатия кнопки или же _getche() для того же самого плюс печать этого символа в консоль.
0
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5
23.03.2014, 02:22  [ТС]
Простите, и куда я должна его поставить. куда ни вставляла и до этого, ничего не выходит(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2014, 02:22
Помогаю со студенческими работами здесь

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

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

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

Как сделать постоянный ввод символов в программу (в том числе без фокуса на ней)?
Хочу сделать небольшое приложение которое бы запускалось и считывало весь введённый текст за сеанс работы системы. Подскажите как написать...

Ввод данных без enter
Если не трудно, прошу ответить на след. вопрос! Возможно ли в паскале создать ввод типа данных (любых) без нажатия &quot;Enter&quot;? Если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru