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

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

Войти
Регистрация
Восстановить пароль
 
Искандер_61
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 29
#1

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

30.05.2016, 13:27. Просмотров 186. Ответов 2
Метки нет (Все метки)

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

Как выделить слово в printf? - C++
Всем Доброго времени суток! Я хочу выделить слово в printfe?цветом Вот код ...

Название файла, как аргумент в командной строке - C++
Ребят, как задавать название файла как аргумент командной строки? допустим у меня есть файл qwer.cpp и я на данный момент могу его...

Как узнать, какой файл *.a указывать в командной строке линкёра (компилятор g++)? - C++
Друзья! Сейчас я делаю так. Допустим, линкёр выдаёт ошибку: undefined reference to `ima_funktsii' Тогда я запускаю утилиту nm: ...

Путь к файлу вводится в командной строке как аргумент функции main() - C++
. Путь к файлу вводится в командной строке как аргумент функции main(). Как это написать?

Как вывести строку, которая состоит из аргументов командной строки так, чтобы каждое слово выводилось без первого символа - C++
Полное условие:Если первый аргумент командной строки-опция-а, то распечатать другие аргументы без их первых символов, а если первой идет...

При вводе в командной строке некой функции должно выдавать правильный ответ. Как реализовать? - C++
Всем доброго времени суток нужна помощь по написанию программы в с++. Смысл программы в том чтобы при вводе в командной строке некого...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Геомеханик
620 / 427 / 310
Регистрация: 26.06.2015
Сообщений: 964
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
Сообщений: 29
02.06.2016, 00:20  [ТС] #3
Благодарю!!! Очень сильно выручили!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2016, 00:20
Привет! Вот еще темы с ответами:

Файловый ввод: как сделать так, чтобы пользователь вводил имя выходного файла в командной строке? - C++
Добрый день форумчане. Подскажите пожалуйста как сделать так чтобы пользователь вводил Имя выходного файла в командной строке. ...

Как выделить нужное слово из "чар" перемнной - C++
Если пользователь наберет к примеру &quot;open file.txt&quot;,то как сделать так чтобы программа распознала команду &quot;open&quot; и открыла ...

Как считать n-ое слово в строке - C++
Как найти любое (n-ное) слово в строке? Слова(группа слов) разделяются запятыми

Ввести строку и слово. Вставить введенное слово за пятым словом в строке - C++
Помогите ребят. Нужно написать программу на С++ без использования библиотек &lt;ctype.h&gt;, &lt;string.h&gt; или &lt;stdlib.h&gt;. Ввести строку и...


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

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

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