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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
FallenAngel76ru
22 / 22 / 10
Регистрация: 11.03.2012
Сообщений: 175
12.03.2012, 13:25     Программа,которая считывает с клавиатуры текст #1
Написать программу, которая считывает с клавиатуры текст и выводит на экран только предложения, состоящие из заданного количества слов.

Среда DEV-C++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2012, 13:25     Программа,которая считывает с клавиатуры текст
Посмотрите здесь:

Написать программу,которая считывает текст с клавиатуры и выводит на экран слова начинающиеся с гласных букв C++
C++ Написать программу, которая считывает текст с клавиатуры и выводит на экран только слова состоящие из заданного количества букв
C++ Программа считывает текст с клавиатуры и выводит на экран...
Написать программу, которая считывает текст с клавиатуры и выводит его на экран, меняет местами каждые соседние слова C++
Написать программу, которая считывает с клавиатуры текст и выводит на экран толь¬ко предложения, состоящие из заданного количества слов. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.03.2012, 13:37     Программа,которая считывает с клавиатуры текст #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <boost/algorithm/string.hpp>
 
int main()
{
   std::string text = "Не так давно мне пришлось делать приложение для Windows Phone работающее с xml-файлами."
   "Всё было неплохо, но когда в файле стало ~100.000 записей, чтение их занимало ну уж очень много времени."
   "И я решил сравненить производительность различных способов чтения данных из xml возможных на платформе .Net.";
   const size_t words_cnt = 13;
   std::vector<std::string> sentences;
   boost::split(sentences, text, boost::is_any_of(".!?"), boost::token_compress_on);
   std::copy_if(sentences.begin(), sentences.end(), std::ostream_iterator<std::string>(std::cout, "\n"),
   [words_cnt](const std::string& value) -> bool
   {
      std::vector<std::string> words;
      boost::split(words, value, boost::is_any_of(" ,"), boost::token_compress_on);
      return words.size() == words_cnt;
   });
}
http://liveworkspace.org/code/402986...8df8d3eed65c32
FallenAngel76ru
22 / 22 / 10
Регистрация: 11.03.2012
Сообщений: 175
12.03.2012, 13:39  [ТС]     Программа,которая считывает с клавиатуры текст #3
Ех как..) А попроще никак это не сделать ?))
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.03.2012, 13:41     Программа,которая считывает с клавиатуры текст #4
FallenAngel76ru, Сделать конечно. Получится больше кода. Делать будет напряжнее, ибо придется использовать больше инструментов.
FallenAngel76ru
22 / 22 / 10
Регистрация: 11.03.2012
Сообщений: 175
12.03.2012, 13:42  [ТС]     Программа,которая считывает с клавиатуры текст #5
С этим согласен ) Буду делать исходя из вышенаписанного..) Спасибо
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
12.03.2012, 14:10     Программа,которая считывает с клавиатуры текст #6
Не гарантирую корректность кода, но:
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; // ставим указатель на позицию начала нового предложения
        }
    }
 
}
Сначала идет число - ограничение на число слов. Далее произвольное число строк - текст.
В константных массивах содержатся разделители слов и предложений(не забудьте увеличить и переменную, храняющую размер массива).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2012, 14:14     Программа,которая считывает с клавиатуры текст
Еще ссылки по теме:

Написать программу, которая считывает с клавиатуры текст C++
C++ Написать программу, которая считывает с клавиатуры текст
C++ программа, которая считывает текст из файла

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

Или воспользуйтесь поиском по форуму:
FallenAngel76ru
22 / 22 / 10
Регистрация: 11.03.2012
Сообщений: 175
12.03.2012, 14:14  [ТС]     Программа,которая считывает с клавиатуры текст #7
Окей, спасибо..)) Всё, полетел разбираться..) Спасибо огромное )))
Yandex
Объявления
12.03.2012, 14:14     Программа,которая считывает с клавиатуры текст
Ответ Создать тему
Опции темы

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