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

Как выделить слово в командной строке? - C++

Восстановить пароль Регистрация
 
Искандер_61
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 27
30.05.2016, 13:27     Как выделить слово в командной строке? #1
В общем, досталось мне задание по C++, в котором нужно прочитать текст из из файла и:
Написать программу, которая по нажатию произвольной клавиши поочередно выделяет каждое слово текста, начинающееся на гласную букву.
Прочитать текст для меня не проблема, а вот как организовать вторую часть? Подскажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2016, 13:27     Как выделить слово в командной строке?
Посмотрите здесь:

C++ Как выделить слово в printf?
Как вывести строку, которая состоит из аргументов командной строки так, чтобы каждое слово выводилось без первого символа C++
C++ Как считать n-ое слово в строке
C++ Как узнать, какой файл *.a указывать в командной строке линкёра (компилятор g++)?
Название файла, как аргумент в командной строке C++
Как выделить нужное слово из "чар" перемнной C++
C++ Путь к файлу вводится в командной строке как аргумент функции main()
C++ При вводе в командной строке некой функции должно выдавать правильный ответ. Как реализовать?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Геомеханик
 Аватар для Геомеханик
517 / 324 / 253
Регистрация: 26.06.2015
Сообщений: 738
30.05.2016, 18:35     Как выделить слово в командной строке? #2
Искандер_61, вот набросал для windows на WinAPI.
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
#include <windows.h>
#include <tchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#define C_YELLOW  (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_RED)
#define C_GREEN   (FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE)
int  select_word(HANDLE hout, COORD& pos, const COORD& scr, WORD color);
WORD read_key(HANDLE hin);
 
int main(void){
    setlocale(LC_ALL, "rus_rus.866");
 
    HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
    HANDLE hin  = GetStdHandle(STD_INPUT_HANDLE);
    if((hout == INVALID_HANDLE_VALUE) || (hin == INVALID_HANDLE_VALUE))
        return EXIT_FAILURE;
 
    CONSOLE_SCREEN_BUFFER_INFO si;
    if(! GetConsoleScreenBufferInfo(hout, &si))
        return EXIT_FAILURE;
 
    //выводим текст для примера
    WCHAR s[] = L"ЯЗЫКИ: APL, ADA, JAVA, ALGOL, LISP, PASCAL, ACTOR.\n"\
                L"картофель, яблоко, огурец, ананас, апельсин, черника.\n"\
                L"ИРИС. ИКРА. Эхо. Кот, Эльбрус, Казбек, Ель, ЁЛКА, КИТ, OCEAN...\n";
    for(int i = 0; i < 2; ++i)
        _putws(s);
    _putws(L"\n\t\t\tКОНЕЦ ИГРЫ");
 
    COORD pos = {0};
    int   ret;
    while(read_key(hin) != VK_ESCAPE){//выход Esc
        ret = select_word(hout, pos, si.dwSize, (rand() % 2) ? C_YELLOW : C_GREEN);
        if(!ret)
            break;
    }
    return EXIT_SUCCESS;
}
 
//выделяет каждое слово текста начинающееся на гласную букву
int select_word(HANDLE hout, COORD& pos, const COORD& scr, WORD color){
    const TCHAR vs[] = _T("AEOYIUaeoyiuАЕЁИОУЭЮЯЫаеёиоуэюяы");
    BOOL  r;
    TCHAR c;
    DWORD n   = 0;
    short i   = 0;
    bool  isv = false;
 
    while(pos.Y < scr.Y){
        r = ReadConsoleOutputCharacter(hout, &c, 1, pos, &n);
        if(!r || !n){
            ++pos.Y;
            pos.X = 0;
            continue;
        }
        OemToCharBuff(&c, &c, 1);
 
        if(IsCharAlpha(c)){
            if(! i)
                isv = (_tcschr(vs, c) != NULL);
            ++i;
        } else if(i > 0){
            if(isv){
                pos.X  -= i;
                FillConsoleOutputAttribute(hout, color, (DWORD)i, pos, &n);
                pos.X  += i;
                return 1;
            }
            i = 0;
        }
        ++pos.X;
    }
    return 0;
}
 
//ожидание нажатие клавиши клавиатуры
WORD read_key(HANDLE hin){
    INPUT_RECORD rs[128];
    DWORD n;
    while(ReadConsoleInput(hin, rs, 128, &n)){
        for(DWORD i = 0; i < n; ++i){
            if((rs[i].EventType == KEY_EVENT) && rs[i].Event.KeyEvent.bKeyDown)
                return rs[i].Event.KeyEvent.wVirtualKeyCode;
        }
    }
    return (WORD)~0;
}
Искандер_61
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 27
02.06.2016, 00:20  [ТС]     Как выделить слово в командной строке? #3
Благодарю!!! Очень сильно выручили!!!
Yandex
Объявления
02.06.2016, 00:20     Как выделить слово в командной строке?
Ответ Создать тему
Опции темы

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