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

Разбить main.cpp на файлы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему виртуальный деструктор вызывается дважды? http://www.cyberforum.ru/cpp-beginners/thread708007.html
Непонятно: #include <iostream> #include <conio.h> #include<string> using namespace std; class base { public:
C++ Как вернуть индексы массива в функции? Подскажите пожалуйста, как вернуть mi, mj ?(надо вернуть индексы массива) #include <stdio.h> #include <string.h> #include <math.h> int index(int A); int main() { http://www.cyberforum.ru/cpp-beginners/thread707985.html
Написать код программы.Вычислить значение выражения C++
Помогите написать код программы. Вычислить:
C++ Вычислить сумму знакопеременного ряда
Помогите найти ошибку в коде:#include <iostream> using namespace std; int main(){ {float a=1,l=4,x,s,q; int n=9; cout<<"vvedite x:"; cin>>x; s=0; for (int i=1;i<=5;i++) {a*=-x;
C++ Вычислить сумму ряда http://www.cyberforum.ru/cpp-beginners/thread707976.html
Помогите найти ошибку в коде: #include <iostream> using namespace std; int main(){ {float a=1,l=4,x,s,q; int n=9; cout<<"vvedite x:"; cin>>x; q=(l*l*x*x)/n; for (int i=1; i<=4;i++)
C++ Комп. графика Здравствуйте!) Я только начинаю изучать компьютерную графику) Для работы мне нужен OpenGl. Как я поняла, мне нужно подключить glut32.dll и opengl32.dll к проекту С++. Как это сделать?? Знающие... подробнее

Показать сообщение отдельно
margarin
36 / 36 / 0
Регистрация: 02.06.2012
Сообщений: 318

Разбить main.cpp на файлы - C++

24.11.2012, 23:15. Просмотров 1275. Ответов 15
Метки (Все метки)

Есть вот такой main.cpp:
Кликните здесь для просмотра всего текста
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
#include <stdlib.h>
#include <iostream>
#include <string.h>
//#include <stdint.h>
//#include <limits.h>
#include <vector>
//#include <iomanip>
#include <math.h>
#include <time.h>
 
using namespace std;
 
vector<int> xarray_int; // мутим супер, пупер векторный массив
char separator;
 
// прототипы
// функций методов сортировки
int met_0();
int met_1();
int met_2();
int met_3();
void heir_met_3(int, int); // доп. функция для "Быстрой сортировки"
 
 
// ввод массива
void enter_array();
 
// вывод массива
void print_array();
 
int main(){
    int swit;
    bool exit = false;
    
    // вводим массив цифр
    enter_array();
    
    // вводим разделитель символов
    cout << "Введите символ-разделитель: ";
    cin >> separator;
    
    
    do{
        // выбор метода сортировки
        cout << "Выберите один из трёх методов сортировки:" << endl;
        cout << "1. Метод пузырьковой сортировки (лучший, для небольшого набора чисел)" << endl;
        cout << "2. Метод Дональда Шелла (для больших массивов чисел)" << endl;
        cout << "3. Метод Хоара (он же метод \"Быстрой сортировки\")" << endl;
        cin >> swit;
        switch(swit){
            case 0: met_0(); // временная мера
                break;
            case 1: met_1();
                break;
            case 2: met_2();
                break;
            case 3: met_3();
                break;
            default :
                cout << "..." << endl;
                exit = true;
                break;
        }
    }while(exit == false);
    return 0;
}
 
void enter_array(){
    int number=1, amount=0, temp;
    
    cout << "Сколько чисел Вы хотите отсортировать?" << endl;
    cin >> amount;
    
    if(amount > 0){
        do{
            amount--;
            // ввод строки, по одному числу
            cout << "Пожалуйста, введите " << number << " число строки: ";
            cin >> temp;
            xarray_int.push_back(temp);
            number++;
        }while(amount != 0);
    }
    number--;
    cout << "Переменная number: " << number << endl;
    cout << "Переменная amount: " << amount << endl;
    cout << xarray_int.size() << endl;
}
 
// вывод массива
void print_array(){
    for(int i=0; i<xarray_int.size(); i++){
        cout << xarray_int[i];
        (i != xarray_int.size()-1) ? cout << separator : cout << endl; // если это не последний элемент - ставим после него "_"
    }
}
 
// не реализовано
int met_0(){
    
    return 0;
}
 
// Метод пузырьковой сортировки
int met_1(){
    print_array();
    
    for (int i = xarray_int.size() - 1; i > 0; --i){
        for (int j = 0; j < i; ++j){
          if (xarray_int[j] > xarray_int[j + 1]){
        //xarray_int[j] = xarray_int[j + 1];
        xarray_int[j] ^= xarray_int[j+1] ^= xarray_int[j] ^= xarray_int[j+1];
          }
        }
    }
    
    print_array();
    return 0;
}
 
// Метод Дональда Шелла
int met_2(){
    cout << "Принял:" << endl;
    print_array();
    int j,p;
    double min;
    for(int m=xarray_int.size()/2; m; m=m/2){ //постоянно уменьшаем шаг от count/2 до 1(разбиваем массив на группы)
        for(int k=0; k<m; k++) //двигаемся внутри группы
        for(int i=m+k; i<xarray_int.size(); i+=m){ //сортировка вставками с учётом шага
            min=xarray_int[i];
            for(j=k;j<i;j+=m)
            if(xarray_int[j]>min) break;
            for(p=i-m; p>=j; p-=m)
            xarray_int[p+m] = xarray_int[p];
            xarray_int[j] = min;
        }
    }
    cout << "Выдал:" << endl;
    print_array();
    return 0;
}
 
// Метод Хоара
int met_3(){
    cout << "Было:" << endl;
    print_array();
    heir_met_3(0, xarray_int.size()-1);
    cout << "Стало:" << endl;
    print_array();  
    return 0;
}
 
void heir_met_3(int left, int right){
    int i = left, j = right, temp;
    int pivot = xarray_int[(left + right) / 2];
 
    // разделение
    while (i <= j) {
        while (xarray_int[i] < pivot)
        i++;
        while (xarray_int[j] > pivot)
        j--;
        if (i <= j) {
            temp = xarray_int[i];
            xarray_int[i] = xarray_int[j];
            xarray_int[j] = temp;
            i++;
            j--;
        }
    };
 
    // рекурсия
    if (left < j)
    heir_met_3(left, j);
    if (i < right)
    heir_met_3(i, right);
}
// (метод Хоара или "Быстрая сортировка" - использует стратегию «разделяй и властвуй».)


Примерное разбитие на файлы (мои предположения):
* header.h - тут что то интересное))))
* main - начало программы
* enter_array - тут вводим массив
* print_array - тут выводим массив
* met_0-3 - файл, с методами сортировки (или стоит разделить?)

Очень прошу помочь, буду использовать в дальнейшем, в качестве шаблона...

Советам и комментариям по коду так же буду рад!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.