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

Программа,которая считывает с клавиатуры текст - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделить целую и дробную часть числа. http://www.cyberforum.ru/cpp-beginners/thread516766.html
Поле first- дробное число, целая часть числа, поле second положительное дробное число, дробная часть числа. Реализовать метод myltiply () умножение на произвольное дробное число типа double. Метод...
C++ математическое решение в С Решите пожалуйста в С : Составить программу для вычисления значений функции F(x) на отрезке с шагом h. Результат представить в виде таблицы, первый столбец который - значения аргумента , второй -... http://www.cyberforum.ru/cpp-beginners/thread516765.html
универсальный указатель C++
Возможно ли сделать универсальный указатель, который будет указывать на переменную любого типа? Ведь указатель по сути - адрес.
C++ Определить класс заданного типа
Определить класс заданного типа. Написать определенные как дружественные функции подпрограммы ввода с клавиатуры и вывода на экран данных, определяющих объекты этого класса. Перегрузить указанные...
C++ Обработка строк http://www.cyberforum.ru/cpp-beginners/thread516744.html
помогите пожалуйста написать вот эти задачи: 1. Дана строка символов. Подсчитать сколько раз среди символов строки встречается символ "+" и сколько раз символ ".". 2. Преобразовать текст, заменяя...
C++ А можно ли темплейту передать число? С базовыми типами темплейтов всё понятно. А число можно? И как7 подробнее

Показать сообщение отдельно
Duha666
51 / 51 / 5
Регистрация: 10.03.2012
Сообщений: 138
12.03.2012, 14:10
Не гарантирую корректность кода, но:
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
#include <stdio.h>
 
using namespace std;
 
const int phrase_separators_size = 3;                         // Размер массива разделителей предложений
const char phrase_separators[phrase_separators_size] = {'.', '!', '?'}; // Массив разделителей предложений
 
const int word_separators_size = 6;                          // Размер массива разделителей слов
const char word_separators[word_separators_size] = {' ', ',', '/', '.', '!', '?'}; // Массив разделителей слов
 
char tmp[50000], str[50000];
bool first = true;
int sz, words_count, phrase_start, n;
 
bool is_word_separator(char s) // является ли символ разделителем слов
{
    for (int i = 0; i < word_separators_size; i++)
        if (word_separators[i] == s)
            return true;
    return false;
}
 
bool is_phrase_separator(char s) // является ли символ разделителем предложений
{
    for (int i = 0; i < phrase_separators_size; i++)
        if (phrase_separators[i] == s)
            return true;
    return false;
}
 
int main()
{
    scanf("%d\n", &n);
    while(gets(tmp))
    {
        if (first)           // добавляем пробел между всеми предложениями при склеивании
            first = false;
        else
            str[sz++] = ' '; 
        for (int i = 0;  tmp[i] != 0; i++)
            str[sz++] = tmp[i];
    }
    for (int i = 0; str[i] != 0; i++)
    {
        if (is_word_separator(str[i]) && i > 0 && ((str[i - 1] >= 'a' && str[i - 1] <= 'z') || (str[i - 1] >= 'A' && str[i - 1] <= 'Z')))
            words_count++;
        if (is_word_separator(str[i]) && words_count == 0)
            phrase_start++;
        if (is_phrase_separator(str[i])) // если предложение закончилось
        {
            if (words_count == n) // и число слов равно n
            {
                for (int j = phrase_start; j <= i; j++)
                    printf("%c", str[j]); // выводим строку
                printf("\n");
            }
            words_count = 0; // обнуляем счетчик слов
            phrase_start = i + 1; // ставим указатель на позицию начала нового предложения
        }
    }
 
}
Сначала идет число - ограничение на число слов. Далее произвольное число строк - текст.
В константных массивах содержатся разделители слов и предложений(не забудьте увеличить и переменную, храняющую размер массива).
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru