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

задачи на основные темы, требующие как минимум присутствие логики - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура http://www.cyberforum.ru/cpp-beginners/thread208286.html
Написать структуру 4 4 Ivanov 51 2 Zuckerberg 99.1 3 Mendelson 99.0 1 Ivanova 55.1 i 2 1 Ivanova 55.1 4 Ivanov 51
C++ В квадратный числовой массив записаны целые числа в диапазоне от -99 до 99. Определить, имеются ли такие квадратные подмассивы, сумма элементов которы В квадратный числовой массив записаны целые числа в диапазоне от -99 до 99. Определить, имеются ли такие квадратные подмассивы, сумма элементов которых равна P. Если таковые имеются, то вывести эти... http://www.cyberforum.ru/cpp-beginners/thread208277.html
Функция+binary + АНГЛ!!! C++
3 задачи! Официальным языком форума является русский язык. Будьте так добры, потрудитесь и переведите тексты заданий
Заполнение массива по спирали C++
Дано число n. Создайте массив A и заполните его по спирали, начиная с числа 0 в центральной клетке A. Спираль выходит вверх, далее закручивается против часовой стрелки. очень нужно помагите
C++ Массив структур http://www.cyberforum.ru/cpp-beginners/thread208267.html
Задача:создать массив структур а,содержащий фамилию и 3 оценки.Найти студентов,чей средний балл выше среднего группы и упорядочить по алфавиту. Получить массив и вывести на экран. вышел такой...
C++ Полное решение, классы!!! + проверь свой АНГЛ!!! необходимо полное решение с оформлением подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
13.12.2010, 02:30
#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
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//////////////////////////////////////////////////////////////////////////////////////
//!!индивидуальное домашнее задание №4. Строки.
//(В задачах этого раздела строки состоят из слов (последовательность букв) 
//и знаков препинания (последовательность любых небуквенных символов).)
 
//Найти в строке тройку слов таких, что из букв двух слов можно получить третье 
//(при составлении этого слова следует использовать все буквы двух других). 
//Если таких троек несколько, вывести ту, которая имеет максимальное суммарное 
//количество букв.
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cctype>
#include <iostream>
#include <map>
#include <sstream>
#include <string>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string                T_str;
typedef std::vector<T_str>         T_words;
typedef std::map<size_t, T_words>  T_3_words_map;
//////////////////////////////////////////////////////////////////////////////////////
T_words  get_words(const T_str&  s)
{
    T_str  s_new;
    std::transform(s.begin(), s.end(), std::back_inserter(s_new), tolower);
    
    std::replace_if(s_new.begin(), s_new.end(), std::not1(std::ptr_fun(isalpha)), ' ');
 
    std::istringstream  ssin(s_new);
    
    T_words  words;
    std::copy
        (
            std::istream_iterator<T_str>(ssin), 
            std::istream_iterator<T_str>(),           
            std::back_inserter(words)
        );
 
    return  words;
}
//////////////////////////////////////////////////////////////////////////////////////
size_t  get_3_words_total_size(const T_words&  words)
{
    return  words[0].size() + words[1].size() + words[2].size();   
}
//////////////////////////////////////////////////////////////////////////////////////
bool  word_is_made_of_2_words_letters(const T_words&  _3_words)
{
    T_str  A_str(_3_words[0]);
    T_str  B_str(_3_words[1] + _3_words[2]);
    
    std::sort(A_str.begin(), A_str.end());
    std::sort(B_str.begin(), B_str.end());
    return  A_str == B_str;
}
//////////////////////////////////////////////////////////////////////////////////////
void  print_3_words(const T_words&  words)
{
    T_3_words_map  _3_words_map;    
    for(T_str::size_type  i = 0; i < words.size(); ++i)
    {        
        for(T_str::size_type  j = 0; j < words.size(); ++j)
        {
            if(j == i) continue;     
            for(T_str::size_type  k = 0; k < words.size(); ++k)
            {
                if(   k == i
                   || k == j) continue;
 
                T_words  _3_words;
                _3_words.push_back(words[i]);
                _3_words.push_back(words[j]);
                _3_words.push_back(words[k]);                
                
                if(word_is_made_of_2_words_letters(_3_words))
                {                    
                    _3_words_map[get_3_words_total_size(_3_words)] = _3_words;
                }              
            }        
        }    
    }
    if(_3_words_map.empty())
    {
        std::cout << "В заданной строке нет слова, состоящего из букв двух других."
                  << std::endl;
    }
    else
    {
        std::cout << "В заданной строке слово \""
                  << _3_words_map.rbegin()->second[0]
                  << "\" состоит из букв слов \""
                  << _3_words_map.rbegin()->second[1]
                  << "\" и \""
                  << _3_words_map.rbegin()->second[2]
                  << "\"."
                  << std::endl;
    }
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите строку из латинских букв, разделенную на слова не латинскими буквами:"    
              << std::endl;
 
    T_str  s;
    getline(std::cin, s);    
    print_3_words(get_words(s));
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru