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

Объясните часть кода программы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Первый элемент массива 1 умножить на все элементы массива 2 и вывести результат http://www.cyberforum.ru/cpp-beginners/thread746394.html
Добрый день. Прошу помочь решить вот такую вот задачку: "есть два массива, в которых границы задает пользователь. Например, один массив {3, 13, 23, 33 .....n} другой {9, 19, 29 ....m} причем шаг между числами в массивах задает пользователь. В нашем случае сейчас 10. А может быть в одном 10, а в другом 5 или еще как-то. надо сначала первый элемент массива 1 умножить на все элементы массива 2...
C++ упорядочить слова в четных строках в порядке убывания в них гласных Доброго времени суток !Помогите пожалуйста советом:cry:Не могу реализовать функцию обработки в программе.Очень нужна ваша помощь! .Вот суть задания: вводим число строк, вводим строки, обрабатываем таким образом,чтобы в четных строках слова были сортированы по мере уменьшения в них гласных букв.Слова могут разделяться пробелами и прочими знаками препинания.Вот код (сделана функция... http://www.cyberforum.ru/cpp-beginners/thread746380.html
C++ Тело падает под действием силы тяжести
Тело падает под действием силы тяжести с нулевой начальной скорости. Движение описывается следующей системой дифференциальных уравнени Система: (как скобочку сделать не знаю) dx/dt=V dV/dt=g/1+k
C++ Построить фигуру, которая состоит из трех концентрических колец разного цвета. Фигура движется по кругу по часовой стрелке
Построить фигуру, которая состоит из трех концентрических колец разного цвета. Фигура движется по кругу по часовой стрелке
C++ Поменять местами максимальный и минимальный элемент матрицы http://www.cyberforum.ru/cpp-beginners/thread746351.html
Здравствуйте. Задача вроде бы простая, но у меня возникло затруднение. Искал подобные, но свою ошибку увидеть не могу в упор. Суть задачи: дана матрица n на m. Поменять местами максимальный и минимальный элемент матрицы. Вот мой код: #include "stdafx.h" #include <iostream> using namespace std;
C++ база данных Собственно, хочу написать программу с базой данных. Самое главное, хочу разобраться в совместном использовании классов, списков и разделения в файлах. Например, возьмем базу данных студентов. Class base_date { private: char name; int age,number_group; public: подробнее

Показать сообщение отдельно
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
26.12.2012, 03:00     Объясните часть кода программы
Писал лабу, помог парень, но он видимо ушёл, я не могу понять его кусок кода.
Вот лаба:
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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
using namespace std;
 
template<class T>
void merge(T *a, int sizei, int sizej);
 
template<class T>
void InPlaceMergesort(T *a, int len);
 
template<class T>
void InPlaceMergesort(T *a, int len) {
   int listsize, xsize;
 
    for (listsize = 1; listsize <= len; listsize*=2) {
        for (int i = 0, j = listsize; (j+listsize) <= len; i += (listsize*2), j += (listsize*2)) {
            merge(&a[i], listsize, listsize);
        }
    }
 
    listsize /= 2;
 
    xsize = len % listsize;
    if (xsize > 1)
        InPlaceMergesort(&a[len-xsize], xsize);
    merge(a, listsize, xsize);
}
 
template<class T>
void merge(T *a, int sizei, int sizej) {
    T temp;
    int ii = 0;
    int ji = sizei;
    int flength = sizei+sizej;
 
    for (int f = 0; f < (flength-1); f++) {
        if (sizei == 0 || sizej == 0)
            break;
 
        if (a[ii] < a[ji]) {
            ii++;
            sizei--;
        }
        else {
            temp = a[ji];
 
            for (int z = (ji-1); z >= ii; z--)
                a[z+1] = a[z];  
            ii++;
 
            a[f] = temp;
 
            ji++;
            sizej--;
        }
    }
}
 
 
template<typename Iterator>
void in_place_mergesort(Iterator const first, Iterator const last) {
   InPlaceMergesort(&*first, static_cast<int>(std::distance(first, last)));
}
 
template<typename Container>
void in_place_mergesort(Container & container) {
   in_place_mergesort(container.begin(), container.end());
}
 
template<typename Value, int N>
void in_place_mergesort(Value (&array)[N]) {
   InPlaceMergesort(&array[0], N);
}
 
 
int main()
{
   const int kol = 8;
cout << "In-place merge sort: " << endl;
    cout << "char mas[] sort:" << endl;
    char mas3[kol];
    mas3[0] = 'x'; mas3[1] = 't'; mas3[2] = 'p'; mas3[3] = 'i'; mas3[4] = 'v'; mas3[5] = 'm'; mas3[6] = 'f'; mas3[7] = 'e';
    char mas1[kol];
    std::copy(mas3, mas3 + kol, mas1);
    char mas2[kol];
    std::copy(mas3, mas3 + kol, mas2);
    std::vector<char> v1(mas3, mas3 + kol);
    std::vector<char> v2(v1);
    std::string s1(mas3, mas3 + kol);
    std::string s2(s1);
    InPlaceMergesort(mas3, kol);
    for (int i = 0; i < kol; i++)
        cout << mas3[i] << " ";
    cout << endl << endl;
    in_place_mergesort(&mas1[0], &mas1[0] + kol);
    for (int i = 0; i < kol; i++)
        cout << mas1[i] << " ";
    cout << endl << endl;
    in_place_mergesort(&mas2[0], &mas2[0] + kol);
    for (int i = 0; i < kol; i++)
        cout << mas2[i] << " ";
    cout << endl << endl;
    in_place_mergesort(v1.begin(), v1.end());
    for (int i = 0; i < kol; i++)
        cout << v1[i] << " ";
    cout << endl << endl;
    in_place_mergesort(v2);
    for (int i = 0; i < kol; i++)
        cout << v2[i] << " ";
    cout << endl << endl;
    in_place_mergesort(s1.begin(), s1.end());
    for (int i = 0; i < kol; i++)
        cout << s1[i] << " ";
    cout << endl << endl;
    in_place_mergesort(s2);
    for (int i = 0; i < kol; i++)
        cout << s2[i] << " ";
    cout << endl << endl;
}


Непонятен вот этот кусок кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<typename Iterator>
void in_place_mergesort(Iterator const first, Iterator const last) {
    InPlaceMergesort(&*first, static_cast<int>(distance(first, last)));
}
 
template<typename Container>
void in_place_mergesort(Container &container) {
    in_place_mergesort(container.begin(), container.end());
}
 
template<typename Value, int N>
void in_place_mergesort(Value (&array)[N]) {
    InPlaceMergesort(&array[0], N);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru