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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread1127071.html
При компиляции ругается libev, вот код ошибок: libev\ev.c(1100): error C2440: 'function' : cannot convert from 'void (__fastcall *)(int)' to 'void (__cdecl *)(int)' libev\ev.c(1100): warning C4024: 'signal' : different types for formal and actual parameter 2 libev\ev.c(2348): error C2440: 'function' : cannot convert from 'void (__fastcall *)(int)' to 'void (__cdecl *)(int)' libev\ev.c(2348):...
C++ Ошибка: невозможно конвертировать лямбда-выражение в int Ошибка в 7 строчке.пишет что не может конвертировать лямбда-выражение в int. #include <iostream> #include <functional> using namespace std; int main() { function<int()> f(); { int x=0; return () mutable {return ++x; }; } http://www.cyberforum.ru/cpp-beginners/thread1127070.html
Программа, которая формирует массив квадратов десяти целых чисел от 0 до 9 и выводит первый и последний элементы сформированного массива в окно C++
Как исправить ошибки? /*Простейшая программа с окном сообщения*/ #include <windows.h>//(1) Директива препроцессора /*Главная функция WinMain*/ int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)(//(2) Заголовок функции int m;//(3) Объяыление массива из 10 целых цисел char szText;//(4) Объяывление символьного массива for(int i=0;i<=9;i++);//(5) Цикл из 10 шагов
C++ Можно ли как-то словить номер элемента используя указатель, а не переменную
void Print(int *arr, const int *size) { for (int *p = arr, n=0; p < arr + *size; p++) cout << " - " << *p << endl; cout << endl; } собственно, можно ли как-то словить номер элемента используя указатель, а не переменную?
C++ Установить системную дату http://www.cyberforum.ru/cpp-beginners/thread1127040.html
Есть функция получения этой даты, прошу помощи в написании функции установления ее. Тобишь, чтобы после установки, функция GetData: void GetDate() { time_t t; tm *tk; time(&t); tk=localtime(&t); cout<<"Local date: "; if ((1+tk->tm_mon)<10) cout << tk->tm_mday<<".0" <<1+tk->tm_mon <<" " <<1900+tk->tm_year << endl;
C++ Выведите все простые множители этого числа в порядке неубывания с учетом кратности (рекурсия) Дано натуральное число n>1. Выведите все простые множители этого числа в порядке неубывания с учетом кратности.Алгоритм должен иметь сможность O(logn). Это задача на рекурсию, без использования циклов. Без рекурсии задачу у меня не примут. Добавлено через 1 минуту Если вводим число 18, то программа должна выдать результат "2 3 3" подробнее

Показать сообщение отдельно
LAKALA
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 5
23.03.2014, 01:31     Как сделать ввод без enter?
Есть готовый код. нужно чтобы на ввод маркера стояло ограничение. Идея:чтобы при вводе, сразу перепрыгивала на ввод искомого символа. 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;
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru