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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ есть ли во введенном с клавиатуры массиве элементы с одинаковым значением http://www.cyberforum.ru/cpp-beginners/thread76880.html
Написать программу, Которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением.
C++ Как внести данные матрицы? Кто-нибудь может подскажит как внести данные матрицы, знаю как составить программу в буквенном выражении, но внести данные (т.е. числа) для решения матрицы, чтобы итог выводился на экран не знаю http://www.cyberforum.ru/cpp-beginners/thread76856.html
В чем моя ошибка? C++
В чем моя ошибка? #include <iostream.h> main() { int x, y, z; x=2+n; y=3.5+x; cout <<’\n’<<”Вывод”<<y; }. запускаю на codeblocs выдает ошибку...
Выделять текст в консоли? C++
можно ли каким либо образом выделять,скопировать текст в консоли?
C++ параметры фунции http://www.cyberforum.ru/cpp-beginners/thread76844.html
вот у меня возник вопрос,например фунция printf,сколько имеет параметров? может у меня такой код printf("%d, %d, %d, %d, %d", 10,11,12,13,14);или же может у меня код такойprintf("hello"); то есть...
C++ функция копировки файлов написал функцию копировки файлов,и естетвенно не без ошибок!!! bool fileCopy(char firstFile,char secondFile){ FILE* f=fopen(firstFile,"r"); int c=0; int i=0; int y=0;... подробнее

Показать сообщение отдельно
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224

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

20.12.2009, 02:17. Просмотров 4917. Ответов 9
Метки (Все метки)

В общем, написал программу, которая из введенных_пользователем_символов извлекает слова.
Написал на 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru