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

задачи на основные темы, требующие как минимум присутствие логики - 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++
Задача:создать массив структур а,содержащий фамилию и 3 оценки.Найти студентов,чей средний балл выше среднего группы и упорядочить по алфавиту. Получить массив и вывести на экран. вышел такой код: #include <iostream> #include <string.h> #include <iomanip> #include <conio.h> using namespace std;
C++ Полное решение, классы!!! + проверь свой АНГЛ!!! http://www.cyberforum.ru/cpp-beginners/thread208266.html
необходимо полное решение с оформлением
C++ С++ Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них... 17)Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один прямоугольник назовём первым, другой вторым определить пересекаются ли эти прямоугольники. C++ Собственно в универе дали такую задачу да же не знаю как её вобще решить просто тупо на бумаге не то что в c++загнать. подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3039 / 1684 / 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));
}
 
Текущее время: 20:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru