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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Viktor7
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 3
#1

Найти два соседних слова с непересекающимся набором согласных - C++

02.01.2011, 12:34. Просмотров 478. Ответов 3
Метки нет (Все метки)

Помогите решить задачу :
Найти два соседних слова с непересекающимся набором согласных
Заранее спасибо !!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2011, 12:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти два соседних слова с непересекающимся набором согласных (C++):

Строковые потоки. Переставить местами два соседних слова - C++
#include <stdio.h> #include <iostream> #include<conio.h> #include<fstream> #include<string> using namespace std; int main()...

Поменять каждые два соседних слова в строке местами - C++
прога должна менять каждые 2 сосенних слова местами) пол дня сижу не могу решить вот последняя моя мысль но всеравно не работает ...

Строки. В тексте поменять местами каждые два соседних слова - C++
Есть задание: нужно считать текст и вывести его на экран, поменяв местами каждые два соседних слова. Есть готовый код: Тексты надо...

Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова - C++
Вот исходный код: #include <fstream> #include <iostream> //#include<clocale> using namespace std; int main() { ...

Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова - C++
Ребят, помогите пожалуста програмку написать, мне завтра для зачета надо....я нехрена не знаю((( Написать программу, которая считывает...

Написать программу,которая считывает текст из файла и выводит его на экран,меняя местами каждые два соседних слова. - C++
Написать программу,которая считывает текст из файла и выводит его на экран,меняя местами каждые два соседних слова.

3
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
02.01.2011, 15:11 #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
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
70
71
72
73
74
75
76
77
78
79
80
//////////////////////////////////////////////////////////////////////////////////////
//Найти два соседних слова с непересекающимся набором согласных.
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef std::vector<T_str>  T_words;
//////////////////////////////////////////////////////////////////////////////////////
void  print_adj_words_with_no_common_consonants(const T_words&  words)
{
    struct  T_have_no_common_consonants
    {
        T_str  consonants_;
        T_have_no_common_consonants() : consonants_("bcdfghklmnpqrstvwxz")
        {}
        //-----------------------------------------------------------------------------
        bool operator() (T_str  word_A, T_str  word_B)
        {
            T_str  common_letters;
            std::sort(word_A.begin(),word_A.end());
            std::sort(word_B.begin(),word_B.end());
            std::set_intersection(word_A.begin(),word_A.end(),
                                  word_B.begin(),word_B.end(),
                                  std::back_inserter(common_letters));
            T_str  common_consonants;
            std::set_intersection(common_letters.begin(),common_letters.end(),
                                  consonants_.begin(),consonants_.end(),
                                  std::back_inserter(common_consonants));
 
            return common_consonants.empty();
        }
    };    
    
    T_words::const_iterator  first_word_it  
        = std::adjacent_find(words.begin(), words.end(), T_have_no_common_consonants());
 
    if(first_word_it == words.end())
    {
        std::cout << "В предложении нет соседних слов без общих согласных."    
                  << std::endl;
    }
    else
    {
        std::cout << "Соседние слова в предложении, не имеющие общих согласных:"
                  << std::endl
                  << '\t'
                  << *first_word_it
                  << std::endl
                  << '\t'
                  << *(first_word_it + 1)
                  << std::endl;
    }    
}
//////////////////////////////////////////////////////////////////////////////////////
T_words  get_words(const T_str&  s)
{
    std::istringstream            ssin(s);
    std::istream_iterator<T_str>  ssin_beg(ssin);
    std::istream_iterator<T_str>  ssin_end;   
 
    T_words                       words;
    std::copy(ssin_beg, ssin_end, std::back_inserter(words)); 
    return  words;
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "String:"
              << std::endl;
    
    T_str  s;
    getline(std::cin, s);
    print_adj_words_with_no_common_consonants(get_words(s));
}
1
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
02.01.2011, 16:45 #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
25
26
27
#include<iostream>
#include<sstream>
#include<vector>
#include<algorithm>
using namespace std;
 
int main()
{
    string s, s1="bcdfghjklmnpqrstvwxz", s2;
    cout<<"enter string\n";
    getline(cin, s);
    istringstream iss(s);
    vector<string> v;
    while(iss>>s) v.push_back(s);
    vector<string>::iterator it;
    for(it=v.begin();it!=v.end()-1;it++){
        char c[10]={'\0'}; char c1[10]={'\0'};
        string a=*it, b=*(it+1);
        sort(a.begin(), a.begin()+a.length());
        sort(b.begin(), b.begin()+b.length());
        set_intersection(a.begin(), a.begin()+a.length(),b.begin(), b.begin()+b.length(),c1);
        set_intersection(c1, c1+sizeof(c1), s1.begin(), s1.end(),c);
        if(c[0]=='\0') cout<<*it+" "+*(it+1)<<endl;
    }
 
 
}
1
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
02.01.2011, 17:12 #4
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
#include <stdio.h>
#include <string.h>
 
#define CONSONANTS "bcdfghklmnpqrstvwxz"
#define DELIM " ,.;:!?\t\n"
    
int main(void){
    char buf[BUFSIZ], * left, * right, * p;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        if ( ( left = strtok(buf, DELIM) ) == NULL ){
            fprintf(stderr, "Wrong input!\n");
            return 1;
        }
        while ( right = strtok(NULL, DELIM) ){
            for ( p = right; *p; ++p )
                if ( strchr(CONSONANTS, *p) && strchr(left, *p) )
                    break;
            if ( ! *p )
                printf("%s - %s\n", left, right);
            left = right;
        }
    }
    
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2011, 17:12
Привет! Вот еще темы с ответами:

В заданной строке найти слова с чередованием гласных и согласных - C++
Нужен примерный алгоритм нахождения слов с чередованием гласных и согласных. Дана строка состоящая из набора букв(английских), цифр,...

Найти два соседних элемента массива, сумма которых максимальна - C++
Доброго времени суток! Прошу помощи в решении следущих задач, которые впрочем можно решить и на Borland C++ Builder, но я предпочитаю...

Найти два соседних элемента массива, сумма которых минимальна - C++
Дан массив.Найдите два соседних элемента,сумма которых минимальнп.

В строке найти слова, в которых гласных букв больше, чем согласных - C++
В общем, такое задание : Написать программу, которая выводит на экран слова введенной с клавиатуры строки, в которых гласных букв больше...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
02.01.2011, 17:12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru