Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Как сосчитать количество букв в большом тексте? Доброго всем здравия, подскажите пожалуйста как посчитать кол-во букв в тексте, если текст состоит из более чем 1500 букв. Я же не могу поместить весь текст в строку. https://www.cyberforum.ru/ cpp-beginners/ thread1634432.html Перегрузка оператора умножения для матрицы C++
Помогите пожалуйста, не получается перегрузить умножение матриц как произведение элемента на элемент матриц. Класс создавался для работы с двумерным массивом вещественных чисел. massiv.h #ifndef MASSIV_H #define MASSIV_H
C++ Найти общее количество локальных максимумов в строках заданной матрицы Добрый вечер, пользователи данного форума! Мне дали задание, но я никак не могу его сделать, не знаю с чего начать. Прошу вашей помощи ) Тема: Использование массива, как параметра функции Задание: Для получения результата составить матрицу из N срок и M столбцов. Найти общее количество локальных максимумов в строках данной матрицы. Разработать программу для отладки составленной функции. https://www.cyberforum.ru/ cpp-beginners/ thread1634378.html C++ Удаление двумерного динамического массива (матрицы) https://www.cyberforum.ru/ cpp-beginners/ thread1634377.html
Вот так я создаю двумерный динамический массив. bool **gameFieldArray; gameFieldArray = new bool*; for (int i = 0; i < height; i++) gameFieldArray = new bool; Правильно ли я удаляю?) for (int i = 0; i < height; i++) delete gameFieldArray;
Сортировка расчёской C++
Всем привет! Помогите, пожалуйста разобрать код. template <typename T, typename Comp> void combsort(T array, std::size_t size, Comp cmp) { if (array && size) { std::size_t jump = size; bool swapped = true; while (jump > 1 || swapped) { if (jump > 1) jump /= 1.24733;
C++ Односвязные линейные списки https://www.cyberforum.ru/ cpp-beginners/ thread1634365.html
Доброго времени суток. Передо мной стоит задача написание программы, которая принимает два списка, вводимых с клавиатуры и проверяет их на идентичность. Написал программу, но возникло 2 проблемы: 1) Программа выдает элементы списка в неправильном порядке (смотрите скриншот). 2) Не знаю, как реализовать проверку на идентичность списков. Помогите, пожалуйста. #include <iostream> using...
C++ Определить значения и позиции, последних двух чётных элементов заданного одномерного массива https://www.cyberforum.ru/ cpp-beginners/ thread1634349.html
Пожалуйста помогите срочно! Нужно сделать задание срочно! Задан одномерный массив D. Определить значения и позиции, последних двух четных элементов. joradfas, одни не пользуется тэгами, другие ими злоупотребляют. Догадайтесь, к какой категории пользователей относитесь Вы?
Алтарь цветного Бога C++
Вот уже год назад Вася записался в секту. И сегодня они решили построить алтари своему цветному (RGB) Господу. Алтарь строится из кирпичей 3 цветов (R, G, B). Он строится на фундаменте (фундамент не считается алтарем). Правила постройки: 1. Если цвета двух соседних треугольников (кирпичи имеют треугольную форму) внизу какого-то треугольника разные, то этот треугольник должен быть третьего...
C++ Попадает ли точка с координатами (x,y) в закрашенную область https://www.cyberforum.ru/ cpp-beginners/ thread1634323.html
Помогите написать программу на С++, которая будет считать при вводе с клавиатуры координат х и у, попадет ли в заштрихованную область
C++ Определить mpl последовательность https://www.cyberforum.ru/ cpp-beginners/ thread1634321.html
здравствуйте, помогите допилить mpl-sequence до юзабельного состояния, за основу взято это: http://rsdn.ru/forum/cpp/4523366.all в некоторых алгоритмах вылетает куча ошибок: typedef sequence<int_<1>, int_<2>, int_<3>> seq2; typedef sequence<int_<1>, int_<2>, int_<3>> seq3; boost::mpl::transform<seq2, seq3, plus<_1, _2>> seqt; // тут typedef boost::mpl::find<seq2, int_<3>>::type pos;...
Объяснить на простых примерах, для чего применяется протокол SOAP C++
Можете обьяснить для чего применяется протокол SOAP?? Приведите простенькие примеры где он используется?? Этот протокол обмена данными в качестве запросов и ответов использует XML верно(передает данные ввиде XML)??Можете дать ссылку на простенький пример клиента SOAP на СИ++??
C++ Подсчитать количество единиц и вывести их отдельной матрицей в конце Сильно затупил. Нужно подсчитать сколько единиц и вывести их отдельной матрицей в конце. У меня вот получилось вывести в конце каждой строки. Но чтобы вывести матрицей до меня дойти не может. Буду признателен за помощь. #include <iostream> #include <cstdlib> #include <ctime> using namespace::std; struct str { short int a; https://www.cyberforum.ru/ cpp-beginners/ thread1634308.html
Эксперт С++
8971 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
09.01.2016, 17:27 0

Структурированные типы данных: смена записей местами - C++ - Ответ 8598498

09.01.2016, 17:27. Показов 1460. Ответов 18
Метки (Все метки)

Ответ

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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
#include <cctype>
#include <locale>
#include <string>
#include <algorithm>
#include <functional>
 
#include <iostream>
#include <fstream>
#include <limits>
#include <list>
 
#include <random>
#include <chrono>
 
// ----------------------------------------------------------------
// ----------------------------------------------------------------
 
// удаляет пробелы слева от текста
inline std::string& ltrim(std::string& s)
{
    s.erase(s.begin(), 
        std::find_if(s.begin(), s.end(), 
            std::ptr_fun<int, int>(std::isgraph)
        )
    );
    return s;
}
 
// удаляет пробелы справа от текста
inline std::string& rtrim(std::string& s)
{
    s.erase(std::find_if(
            s.rbegin(), s.rend(), std::ptr_fun<int, int>(std::isgraph)
        ).base(), s.end()
    );
    return s;
}
 
// удаляет пробелы слева и справа от текста
inline std::string& trim(std::string& s) { return ltrim(rtrim(s)); }
 
// ----------------------------------------------------------------
// ------------------- random`s staff -----------------------------
 
// генератор псевдослучайных чисел
 
#define dT \
    typename std::common_type<T1,T2>::type
 
namespace detailRandom{
 
    template<class T> struct property_
    {
        enum { eIS_BOOL = std::is_same<T, bool>::value };
 
        //TODO: как насчет wchar_t ???
        //ANSWER: матерная брань
        enum {
            eIS_CHAR
             = std::is_same<T, char>::value
            || std::is_same<T, unsigned char>::value
            || std::is_same<T, signed char>::value
        };
 
        enum { eIS_INTEGRAL = std::is_integral<T>::value && !eIS_CHAR && !eIS_BOOL };
        enum { eIS_FLOATING = std::is_floating_point<T>::value };
        enum { eIS_OTHER = !eIS_CHAR && !eIS_INTEGRAL && !eIS_FLOATING };
    };
 
    template<class T>
    using for_integer
        = typename std::enable_if< property_<T>::eIS_INTEGRAL >::type*;
 
    template<class T>
    using for_char
        = typename std::enable_if< property_<T>::eIS_CHAR >::type*;
 
    template<class T>
    using for_bool
        = typename std::enable_if< property_<T>::eIS_BOOL >::type*;
 
    template<class T>
    using for_floating
        = typename std::enable_if< property_<T>::eIS_FLOATING >::type*;
 
    template<class T>
    using for_other
        = typename std::enable_if< property_<T>::eIS_OTHER >::type*;
 
 
    std::default_random_engine& rnd_()
    {
        static std::default_random_engine gen(
            static_cast<unsigned>(
                std::chrono::system_clock::now().time_since_epoch().count()
            )
        );
        return gen;
    }
 
} // namespace detailRandom
 
template<class T1, class T2, detailRandom::for_integer<dT> = nullptr> inline
dT random(const T1& a, const T2& b)
{
    std::uniform_int_distribution<dT> distribution(a, b);
    return distribution(detailRandom::rnd_());
}
 
template<class T1, class T2, detailRandom::for_floating<dT> = nullptr> inline
dT random(const T1& a, const T2& b)
{
    std::uniform_real_distribution<dT> distribution(a, b);
    return distribution(detailRandom::rnd_());
}
 
template<class T1, class T2, detailRandom::for_char<dT> = nullptr> inline
dT random(const T1& a, const T2& b)
{
    enum { eIS_SIGNED = std::is_signed<dT>::value };
 
    typedef typename std::conditional< eIS_SIGNED, int, unsigned >::type
        type;
 
    const auto a_ = static_cast<type>(a);
    const auto b_ = static_cast<type>(b);
    return static_cast<dT>(random(a_, b_));
}
 
 
template<class T1, class T2, detailRandom::for_bool<dT> = nullptr> inline
dT random(const T1& a, const T2& b)
{
    const auto a_ = static_cast<int>(a);
    const auto b_ = static_cast<int>(b);
    return static_cast<dT>(random(a_, b_));
}
#undef dT
 
 
// ----------------------------------------------------------------
// ----------------------------------------------------------------
 
// макросы нужны, что бы не писать каждый раз 
// одно и тоже для очередного класса
 
// отвечают за умение класса выводится в поток 
// и вводится оттуда же
 
#ifndef OUT_TO_STREAM
#define OUT_TO_STREAM(type_)  \
        template<class T>friend   \
        ::std::basic_ostream<T>&  \
        operator<<(::std::basic_ostream<T>& os, const type_& obj )
#endif
 
#ifndef FROM_STREAM
#define FROM_STREAM(type_)  \
        template<class T>friend   \
        ::std::basic_istream<T>&  \
        operator>>(::std::basic_istream<T>& is, type_& obj )
#endif
 
// ----------------------------------------------------------------
// ----------------------------------------------------------------
 
// утилита для ввода циферок
// с проверкой результата
inline void input(const char* msg, int& dst, const int min, const int max)
{
    for (;;)
    {
        std::cout << msg;
        std::cin >> dst;
        if ( !dst ||  min<0 || max<0 ||   ((dst<min || dst > max) && (max!=min!=0))  )
            std::cout << "enter the numbers[" << min << " : " << max << "]\n",
            std::cin.clear(),
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        else
            break;
    }
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
 
// ----------------------------------------------------------------
// ----------------------------------------------------------------
 
// --- разбирает входную строку на токены, 
// которые помещает в указанный контейнер
template <class ContainerT>
void tokenize(const std::string& text, ContainerT& tokens, 
    const std::string& delimiters = " ", bool trimEmpty = false)
{
    std::string::size_type pos, lastPos = 0;
    for (;;)
    {
        pos = text.find_first_of(delimiters, lastPos);
        if (pos == std::string::npos)
        {
            pos = text.length();
            if (pos != lastPos || !trimEmpty)
                tokens.emplace_back(text.data() + lastPos, pos - lastPos);
            break;
        }
        else
        {
            if (pos != lastPos || !trimEmpty)
                tokens.emplace_back(text.data() + lastPos, pos - lastPos);
        }
        lastPos = pos + 1;
    }
}
 
// ----------------------------------------------------------------
// ----------------------------------------------------------------
 
inline const char* sys()        { return "forking system: "; }
inline const char* filenameBD() { return "database.txt";     }
 
// ----------------------------------------------------------------
// ----------------------------------------------------------------
 
 
struct person{
 
    OUT_TO_STREAM(person)
    {
        return os << obj.name << " : " << obj.sname << " : " << obj.tname << " : " 
            << obj.scienseD << " : " << obj.post << " : " << obj.rang;
    }
    FROM_STREAM(person)
    {
        std::string line;
        std::getline(is, line);
        std::vector<std::string> record;
        tokenize(line, record, ":", true);
 
        if (record.size() != 6)
            return std::cout
                << sys() << "total collapse!"
                << sys() << "file of database is nonconsistent\n"
                << sys() << "skip record\n", is;
 
        #define get_(n) (trim(record[n]), record[n]);
 
        obj.name     = get_(0);
        obj.sname    = get_(1);
        obj.tname    = get_(2);
        obj.scienseD = get_(3);
        obj.post     = get_(4);
        obj.rang     = get_(5);
        #undef get_
 
        return is;
    }
 
    
    static void input(const char* msg, std::string& dst)
    {
        std::cout << msg; std::cin >> dst;
        std::cin.clear(),
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
 
    void input()
    {
        input("enter name: "          , name);
        input("enter surename: "      , sname);
        input("enter patronymic: "    , tname);
        input("enter sciense degree: ", scienseD);
        input("enter post: "          , post);
        input("enter rang: "          , rang);
    }
 
    std::string name;
    std::string sname;
    std::string tname;
    std::string scienseD;
    std::string post;
    std::string rang;
};
 
 
template<size_t N> inline void genDB(person(&arr)[N]);
template<size_t N> inline void genmanDB(person(&arr)[N]);
template<size_t N> inline void loadDB(person(&arr)[N]);
template<size_t N> inline void saveDB(const person(&arr)[N]);
template<size_t N> inline void cnahgeDB(person(&arr)[N]);
template<size_t N> inline void viewDB(const person(&arr)[N]);
 
int main()
{
    const size_t count = 4;
    person bd[count];
 
    int answer = 0;
    for (;;)
    {
        std::cout << sys() << "what would you like?\n"
            << "1) auto generate database\n"
            << "2) manual generate database\n"
            << "3) load database\n"
            << "4) save database\n"
            << "5) change records\n"
            << "6) exit from this program\n";
 
        input("enter number [1: 5]: ", answer, 1, 6);
 
        switch (answer)
        {
            case 1: genDB(bd);    break;
            case 2: genmanDB(bd); break;
            case 3: loadDB(bd);   break;
            case 4: saveDB(bd);   break;
            case 5: cnahgeDB(bd); break;
            case 6: return 0;
        }
    }
}
 
template<size_t N> inline void viewDB(const person(&bd)[N])
{
    std::cout << sys() << " current content:\n";
    size_t n = 0;
    for (const auto& record : bd)
        ++n, std::cout << n << ") " << record << '\n';
    std::cout << std::endl;
}
 
template<size_t N> inline void genDB(person(&bd)[N])
{
    #define COUNT_(arr) sizeof(arr)/sizeof(arr[0]) - 1
 
    #define INIT_(member) \
            bd[n].member = member##s[random(0, COUNT_(member##s))]
 
    const char*  names[] = { "Pedro" , "Conchita", "Hulion", "Fedora"  , "Bubunt", "Julio"      };
    const char* snames[] = { "Pupkin", "Stewart"  , "Buldog", "Karas"   , "Funker", "Pizza"      };
    const char* tnames[] = { "arab" , "wombat"  , "salat" , "colloquium", "guepard" , "deer"       };
    const char*  posts[] = { "newbie", "junior"  , "middle", "senior"  , "expert", "Straustrup" };
 
    const char* scienseDs[] = { "professor", "big professor", "senior lecturer", "assistant" };
 
    const char* rangs[] = { "hacker", "hardhacker", "stinger",
        "brave-hacker", "digga-hacker", "slacker" };
 
    for (size_t n = 0; n < N; ++n)
        INIT_(name), INIT_(sname), INIT_(tname), INIT_(post), INIT_(scienseD), INIT_(rang);
 
    #undef COUNT_
    #undef INIT_
 
    std::cout << sys() << " generate database...success!\n";
    viewDB(bd);
}
 
template<size_t N> inline void genmanDB(person(&bd)[N])
{
    for (size_t n = 0; n < N; ++n)
        std::cout << n + 1 << ") person:\n",
        bd[n].input(),
        std::cout << "=========================================\n";
}
 
template<size_t N> inline void loadDB(person (&bd)[N] )
{
    std::cout << sys() << " load database... \n";
    std::ifstream infile(filenameBD());
    if (!infile)
        return std::cout << "\nOh dear! Something has gone wrong way!\n\n",
        void();
    for (size_t i = 0; i < N; ++i)
        infile >> bd[i];
    std::cout << " success!\n";
    viewDB(bd);
}
 
template<size_t N> inline void saveDB(const person(&bd)[N])
{
    std::cout << sys() << " save database... ";
    std::ofstream outfile(filenameBD());
    if (!outfile)
        return std::cout << "\nOh dear! Something has gone wrong way!\n\n", 
            void();
    for (size_t i = 0; i < N; ++i)
        outfile << bd[i] << '\n';
    std::cout << " success!\n\n";
}
template<size_t N> inline void cnahgeDB(person(&bd)[N])
{
    using std::swap;
    int f = 0, s = 0;
    std::cout << sys() << "change records...\n";
 
    input("input number of first record: " , f, 0, 0);
    input("input number of second record: ", s, 0, 0);
    swap(bd[f-1], bd[s-1]);
    viewDB(bd);
    std::cout << "\n\n";
}
 Комментарий модератора 

hoogy, ты в очередной раз нарушил правила форума:
П. 5.2. Запрещено использовать нецензурные выражения в любом виде.


Вернуться к обсуждению:
Структурированные типы данных: смена записей местами C++
1
Заказать работу у эксперта

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2016, 17:27
Готовые ответы и решения:

Структурированные типы данных
Даны две структуры: struct point {int x, y;} p1, p2; struct rect {struct point pt1, pt2;}; и...

Структурированные типы данных. Массивы С++
В двумерном массиве найти суммы S отрицательных элементов каждого столбца. Добавлено через 20...

Что такое "Структурированные типы данных. Объекты"
Что такое? Структурированные типы данных. Объекты. Разобрался.

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си?
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы:...

18
09.01.2016, 17:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2016, 17:27
Помогаю со студенческими работами здесь

структурированные типы данных №3
задача №3 Переставить местами строки матрицы, содержащие ее минимальный и максимальный элемент......

Структурированные типы данных
Любой из структурированных типов (а их в делфи 4: массивы, запписи, множества и файлы)...

структурированные типы данных
есть вот такая вот структура #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstring&gt; using...

Структурированные типы данных
Доброго дня всем! Ребята, есть просьба, помогите мне пожалуйста. Очень вас прошу, кто может. Я буду...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru