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

Строка: вывести на экран все слова сообщения, состоящие из n букв. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
ilgam-boys
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 12
25.03.2012, 17:27     Строка: вывести на экран все слова сообщения, состоящие из n букв. #1
Работа со строками. Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и знаками препинания, в конце которого ставится точка):вывести на экран все слова сообщения ,состоящие из n букв.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2012, 17:27     Строка: вывести на экран все слова сообщения, состоящие из n букв.
Посмотрите здесь:

C++ Создать программу, которая подсчитывает количество чисел в тексте и выводит на екран все слова, состоящие только из латинских букв
C++ В символьной строке удалить все слова, состоящие из нечетного количества букв.
C++ Написать программу, которая считывает текст с клавиатуры и выводит на экран только слова состоящие из заданного количества букв
C++ Строка: Вывести на экран только предложения, состоящие из заданного количества слов.
Вывести на экран все слова, количество букв в которых превышает введенное число C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
25.03.2012, 21:20     Строка: вывести на экран все слова сообщения, состоящие из n букв. #2
ilgam-boys,

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
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <cctype>
#include <boost/lambda/lambda.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/lambda/bind.hpp>
 
template <typename T>
struct check : public std::unary_function <T, bool> {
   bool operator()(const T & value) const {
      return std::all_of(
                value.begin(),
                value.end(),
                ::isalpha  
             );
   }
};
 
int main() {
   std::string message = "A message i1 its most general meani2ng is an object of communicatio";
   std::vector <std::string> vector_words;
   std::size_t number = 2;
   bool state = true;
   
   boost::split(
      vector_words,
      message,
      boost::is_any_of(" .,:;"),
      boost::token_compress_on
   );
   
   std::copy_if(
      vector_words.begin(),
      vector_words.end(),
      std::ostream_iterator <std::string>(std::cout, " "),
      boost::lambda::ret <bool>(
         (((boost::lambda::bind(
            &std::string::length,
            boost::lambda::_1
         )) == (boost::lambda::var(number))))
         && ((boost::lambda::bind(
               check <std::string>(),
               boost::lambda::_1
            )) == (boost::lambda::var(state))) 
      )
   );
 
   return 0;
}
http://liveworkspace.org/code/ac21ff...8140c48e10c2f1
ilgam-boys
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 12
18.04.2012, 21:30  [ТС]     Строка: вывести на экран все слова сообщения, состоящие из n букв. #3
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
#include <iostream>
#include <string>
using namespace std;
int main ()
{
    string str,slovo;
    int s=0;
    cout <<"n="<<endl; cin >>n;
    string ::size_type k=0, pos=0,n=0;
    string razdel=",.:;!? ";
    cout <<"enter string="<<endl;
    getline(cin,str);
    k=str.find_first_of(razdel,pos);
    while (k!=string::npos)
    {
        slovo=str.substr(pos,k-pos);
        if (ispunct(str[k]))
            pos=k+2;
        else pos=k+1;
        if (slovo[0]==n) s++;
        k=str.find_first_of(razdel,pos);
    }
    cout <<"kolichestvo="<<s<<endl;
    return 0;}
Добавлено через 1 минуту
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
#include <iostream>
#include <string>
using namespace std;
int main ()
{
    string str,slovo;
    int s=0;
    cout <<"n="<<endl; cin >>n;
    string ::size_type k=0, pos=0,n=0;
    string razdel=",.:;!? ";
    cout <<"enter string="<<endl;
    getline(cin,str);
    k=str.find_first_of(razdel,pos);
    while (k!=string::npos)
    {
        slovo=str.substr(pos,k-pos);
        if (ispunct(str[k]))
            pos=k+2;
        else pos=k+1;
        if (slovo[0]==n) s++;
        k=str.find_first_of(razdel,pos);
    }
    cout <<"kolichestvo="<<s<<endl;
    return 0;}
Добавлено через 59 секунд
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
#include <iostream>
#include <string>
using namespace std;
int main ()
{
    string str,slovo;
    int s=0;
    cout <<"n="<<endl; cin >>n;
    string ::size_type k=0, pos=0,n=0;
    string razdel=",.:;!? ";
    cout <<"enter string="<<endl;
    getline(cin,str);
    k=str.find_first_of(razdel,pos);
    while (k!=string::npos)
    {
        slovo=str.substr(pos,k-pos);
        if (ispunct(str[k]))
            pos=k+2;
        else pos=k+1;
        if (slovo[0]==n) s++;
        k=str.find_first_of(razdel,pos);
    }
    cout <<"kolichestvo="<<s<<endl;
    return 0;}
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
19.04.2012, 10:25     Строка: вывести на экран все слова сообщения, состоящие из n букв. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    static char* psz = new char[256]; int n = 0;
    printf("Vvedite stroku: "); gets(psz);
    printf("Vvedite dlinu slova: "); scanf("%d",&n);
    
    for (char* token = strtok(psz," "); 
        token != NULL; token = strtok(NULL," "))
        if (strlen(token) == n)     printf("%s\n",token);
 
    return 0;
}
Yandex
Объявления
19.04.2012, 10:25     Строка: вывести на экран все слова сообщения, состоящие из n букв.
Ответ Создать тему
Опции темы

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