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

Выделение слов из массива строк - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ кэш процессора http://www.cyberforum.ru/cpp-beginners/thread76865.html
Народ, помогите пожалуйста с такой вещью. Нужно получить информацию о кэше процессора. Были тщетные попытки использовать GetLogicalProcessorInformation функцию. Как раз о кэше она ничего и не вывела. Спасите-помогите :)
C++ Матрица С++ Кто-нибудь может подскажит как внести данные матрицы, знаю как составить программу в буквенном выражении, но внести данные (т.е. числа) для решения матрицы, чтобы итог выводился на экран не знаю http://www.cyberforum.ru/cpp-beginners/thread76856.html
C++ SetupDi
Только пробую Setup API, но тут же столкнулся с проблемой... при вызове даже SetupDiCreateDeviceInfoList(NULL, NULL); ловлю ошибку error LNK2019: unresolved external symbol __imp__SetupDiGetClassDevsExW@28 referenced in function "void * __cdecl DoDeviceEnum(struct _GUID)" (?DoDeviceEnum@@YAPAXU_GUID@@@Z) Создаю проект как Win32 Console, т.к. инфу никакой по SetupDi нет кроме как на мсдн - не...
C++ Win32 API ввод текста в окно.
помогите нсатроить правильгное стирание символа пожалуйста. каретка текст затирает не равномерно при нажатии . Слишком малое пространство закрашивается, хотя сама каретка переходит на правлеьное расстояние (ширина символа перед кореткой). Надо закрасить предыдущую букву, удалить её из массива считанных чисел, и поставить каретку до этого предыдущего символа. плохо стирает. LONG APIENTRY...
C++ Как изменить цвет вывода в С++? http://www.cyberforum.ru/cpp-beginners/thread76701.html
Как изменить цвет вывода в С++?
C++ Возведение в стрепень, рекурсивная функция. Задание: написать рекурсивную функцию, которая возводит число в степень путем многократного умножения числа самого на себя. (Сам знаю, что можно сделать гораздо проще и оптимальнее, но надо именно через рекурсию). :( P. S. На этот раз программа действительно не работает. :) #include <iostream> using namespace std; int stepenj(int num, int degr) подробнее

Показать сообщение отдельно
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
20.12.2009, 02:17     Выделение слов из массива строк
В общем, написал программу, которая из введенных_пользователем_символов извлекает слова.
Написал на 99%, но в некоторых местах допустил ошибки и не знаю, как их исправить.

Подскажите, как доработать программу.

Спасибо.

Вот код, с подробными комментариями:

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
using namespace std;
#include <iostream>
#include <ctype.h>
#include <string.h>
 
bool GetWord(char* string, char* word, int& worfOffset);
 
int main()
{
    const int bufferSize = 256;
    char buffer[bufferSize+1];  // Переменная для хранения всей строки
    char word[bufferSize+1];    // для хранения слова
    int wordOffset = 0;         // начинаем с первого символа
    
    cout << "Enter a string\n-> ";
    cin.getline(buffer, bufferSize);
    
    while (GetWord(buffer, word, wordOffset) )
        cout << "Got to this word: " << word << endl;
    
    return 0;
}
 
// Функция для выделения слова из строки символов:
 
bool GetWord(char* string, char* word, int& wordOffset)
{
    if(!string[wordOffset])     // Определяет ли конец?
    return false;
    
    char *p1, *p2;
    p1 = p2 = string+wordOffset;    // указатель на слудующее слово
    
    // удаляем пробелы
    for(int i=0; i<(int)strlen(p1) && !isalnum(p1[0]); i++)
        p1++;
    
    // Проверка наличия слова
    if(!isalnum(p1[0]))
    return false;
    
    // Указатель p1 показывает начало следующего слова
    // так же как и p2
 
    p2=p1;
 
    // перемещаем p2 в конец слова
    while(isalnum(p2[0]))
        p2++;
 
    // p2 указывает на конец слова
    // а p1 - в начало
    // разность указателей показывает длину слова
    int len = int (p2-p1);
    
    // копируем слово в буфер:
    strcpy(word, p1, len);
    
    // и добавляем символ разрыва строки:
    word[len] = '\ 0';
    
    // Ищем начало следующего слова
    for(int i=int(p2-string); i<(int)strlen(string) && !isalnum(p2[0]); i++)
        p2++;
        
    wordOffset = int(p2-string);
 
    return true;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru