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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
#1

из 4 функций сделать одну - C++

01.12.2012, 19:43. Просмотров 517. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста из 4 функций сортировки сделать одну, но чтобы работала на все Заранее благодарен.
вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "module.h"
 
void sortCheck(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0; i < size - 1; ++i)
            if(mas[i].check < mas[i + 1].check){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i + 1];
                mas[i + 1] = tmp;
                flag = true;
            }
    }while(flag);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "module.h"
 
void sortPrice(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0; i < size - 1; ++i)
            if(mas[i].price < mas[i + 1].price){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i+1];
                mas[i+1] = tmp;
                flag = true;
            }
    }while(flag);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "module.h"
 
void sortTNOP(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0;i < size - 1; ++i)
            if(mas[i].tnop < mas[i+1].tnop){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i+1];
                mas[i + 1] = tmp;
                flag = true;
            }
    }while(flag);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "module.h"
#include <string.h>
 
void sortWriters(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0;i < size - 1; ++i)
            if((strcmp(mas[i].writers, mas[i+1].writers)) == 1){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i + 1];
                mas[i + 1] = tmp;
                flag = true;
            }
    }while(flag);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 19:43     из 4 функций сделать одну
Посмотрите здесь:

Как сделать из двух функций одну) - C++
void Resize_Array_unsigned_int( unsigned int &amp;_New_Size_, unsigned int *_Conteiner_ ) { unsigned int *tmp = new unsigned int; ...

Программа не выполняет одну из функций - C++
у меня получается сделать умножение а с суммой не могу справится, помогите пожалуйста задача: в одномерном массиве, состоящем из n...

Как сделать одну глобальную переменную - C++
Есть многофайловый проект. К примеру 5 файлов(5 &quot;H&quot; файлов+для них 5 &quot;срр&quot; файлов, пускай в каждом файле будет лежать класс) и есть...

Как сделать ввод в одну строку? - C++
как сделать ввод в одну строку, через нажатие ентера и отступа на N расстояние, такого типа: scanf(&quot;%d.%d.%d&quot;, &amp;Year, &amp;Month, &amp;Day); ...

Сделать из двух строк одну, включающую их, как подпоследовательности - C++
Привет, задача заключается в том, что даётся две строки. Из них нужно сделать строку минимальной длины, которая будет включать данные, как...

Как сделать стабильный таймер в Windows XP,7,8 с задержкой в одну микросекунду? - C++
Собственно вопрос в топике, главное, чтоб таймер был стабилен и не скакал и чтоб задержка была в одну микросекунду. Тоесть возможно ли в...

Как сделать с использованием функций? - C++
#include &lt;iostream&gt; using namespace std; #include &lt;cmath&gt; int main() {

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Diemon
17 / 5 / 2
Регистрация: 13.09.2011
Сообщений: 24
01.12.2012, 20:03     из 4 функций сделать одну #2
Достаточно не просто делать что - либо без конечного проекта. Код не компилировался, но, по идее, должен работать.

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
#include "module.h"
#include <string.h>
 
void sort(Books* mas, int& size, const char* param){
    bool flag;
    switch(param){
    case "check":
        do{
            flag = false;
            for(int i = 0; i < size - 1; ++i)
                if(mas[i].check < mas[i + 1].check){
                    Books tmp;
                    tmp = mas[i];
                    mas[i] = mas[i + 1];
                    mas[i + 1] = tmp;
                    flag = true;
                }   
        }while(flag);
    break;
        
    case "price":
        do{
            flag = false;
            for(int i = 0; i < size - 1; ++i)
                if(mas[i].price < mas[i + 1].price){
                    Books tmp;
                    tmp = mas[i];
                    mas[i] = mas[i+1];
                    mas[i+1] = tmp;
                    flag = true;
                }
        }while(flag);
    break;
        
    case "TNOP":
        do{
            flag = false;
            for(int i = 0;i < size - 1; ++i)
                if(mas[i].tnop < mas[i+1].tnop){
                    Books tmp;
                    tmp = mas[i];
                    mas[i] = mas[i+1];
                    mas[i + 1] = tmp;
                    flag = true;
                }
        }while(flag);
    break;
        
    case "writers":
        do{
            flag = false;
            for(int i = 0;i < size - 1; ++i)
                if((strcmp(mas[i].writers, mas[i+1].writers)) == 1){
                    Books tmp;
                    tmp = mas[i];
                    mas[i] = mas[i + 1];
                    mas[i + 1] = tmp;
                    flag = true;
                }
        }while(flag);
    break;
    }
}
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
01.12.2012, 20:05  [ТС]     из 4 функций сделать одну #3
Я конечно могу его скинуть полностью, но слишком много будет кодов. Если надо, давайте я полностью скину.
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
01.12.2012, 20:14     из 4 функций сделать одну #4
Первое, что в голову лезет - передавать в качестве 3 аргумента в функцию параметр, ну а далее switch-ем обрабатывать.
Diemon
17 / 5 / 2
Регистрация: 13.09.2011
Сообщений: 24
01.12.2012, 20:16     из 4 функций сделать одну #5
Цитата Сообщение от dmmax Посмотреть сообщение
Я конечно могу его скинуть полностью, но слишком много будет кодов. Если надо, давайте я полностью скину.

Ну, вы посмотрите данный код, подходит он вам или нет, проверьте ошибки.
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
01.12.2012, 20:28  [ТС]     из 4 функций сделать одну #6
Кликните здесь для просмотра всего текста
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
#include "module.h"
#include <conio.h>
 
char printMenu(int n){
    switch(n)
        {
        case 0:
            cout << "\n1. Показ массива на экран." << endl;
            cout << "2. Сортировка." << endl;
            cout << "3. Показ вверху списка рекомендованные книги." << endl;
            cout << "0. Выход." << endl;
            break;
        case 1:
            cout << "\n1. Показ таблицы полностью." << endl;
            cout << "2. Показ таблиц, только k строк." << endl;
            cout << "3. Ручное заполнение работы." << endl;
            cout << "0. Выход в главное меню." << endl;
            break;
        case 2:
            cout << "1. По количеству страниц." << endl;
            cout << "2. По Автору." << endl;
            cout << "3. По названию." << endl;
            cout << "4. По цене." << endl;
            cout << "0. Выход в главное меню." << endl;
            break;
        case 4:
            break;
        }
    char fmenu = getch();
    return fmenu;
}
= printmenu
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "module.h"
void printText(Books* mas, int& size){
    if(mas != NULL){
        system("cls");
        cout <<"№:--Страниц:-------Автор------------Проиизведение----Цена---Рекомендация\n";
 
        for(int i = 0;i < size; ++i){
           printf("%02d.|%-15d|%-15s|%-16s|%4d| %s\n",i + 1, mas[i].tnop, mas[i].writers, mas[i].product, mas[i].price,
               mas[i].check ? "Да" : "Нет");
        cout << "-----------------------------------------------------------------------\n";
        }
    }
}
= printtext
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "module.h"
 
void sortCheck(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0; i < size - 1; ++i)
            if(mas[i].check < mas[i + 1].check){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i + 1];
                mas[i + 1] = tmp;
                flag = true;
            }
    }while(flag);
}
= sortCheck

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "module.h"
void sortPrice(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0; i < size - 1; ++i)
            if(mas[i].price < mas[i + 1].price){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i+1];
                mas[i+1] = tmp;
                flag = true;
            }
    }while(flag);
}
= sortPrice

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "module.h"
#include <string.h>
void sortProduct(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0; i < size - 1; ++i)
            if((strcmp(mas[i].product, mas[i+1].product)) == 1){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i+1];
                mas[i+1] = tmp;
                flag = true;
            }
    }while(flag);
}
= sortProduct

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "module.h"
void sortTNOP(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0;i < size - 1; ++i)
            if(mas[i].tnop < mas[i+1].tnop){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i+1];
                mas[i + 1] = tmp;
                flag = true;
            }
    }while(flag);
}
= sortTNOP

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "module.h"
#include <string.h>
 
void sortWriters(Books* mas, int& size){
    bool flag;
    do{
        flag = false;
        for(int i = 0;i < size - 1; ++i)
            if((strcmp(mas[i].writers, mas[i+1].writers)) == 1){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i + 1];
                mas[i + 1] = tmp;
                flag = true;
            }
    }while(flag);
}
= sortWriters

Кликните здесь для просмотра всего текста
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
/*Книги: автор, наименование, количество страниц, цена. Дополнить вывод рекомендацией 
книг, которые можно прочитать за один вечер (количество страниц меньше 100).*/
#include "module.h"
#include <conio.h>
#include <windows.h>
 
#define CRTDBG_MEM_ALLOC
#include <crtdbg.h>
 
 
int main()
{
    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int size = 0;
    char menu;
    Books* mas = NULL;
    do{
        menu = printMenu(0);
        switch(menu){
            case '1': // Показ массива на экран
                {
                    system("cls");
                    char submenu;
                    do{
                        submenu = printMenu(1);
                        switch(submenu){
                            system("cls");
                            case '1':  // Показ таблицы полностью
                                textFileAll(mas, size);
                                printText(mas, size);
                                break;
                            case '2':  // Показ таблицы, только k строк
                                textFile(mas, size);
                                printText(mas, size);
                                break;
                            case '3':  // Ручное заполнение таблицы.
                                textByHund(mas, size);
                                printText(mas, size);
                                break;
 
                            case '0':   //Выход в главное меню
                                system("cls");
                                break;
                            default:
                                {
                                    system("cls");
                                    cout << "\n Вы ввели неверный пункт меню!" << endl;
                                }
                        }
                    }while(submenu != '0');
                }
                break;
            case '2': //Сортировка
                {
                   system("cls");
                   char submenu;
                   do{
                       submenu = printMenu(2);
                       switch(submenu){
                            case '1':      // sortTNOP
                                sortTNOP(mas, size);
                                printText(mas, size);
                                break;
                            case '2':     // sortWriters
                                sortWriters(mas, size);
                                printText(mas, size);
                                break;
                            case '3':     // sortProduct
                                sortProduct(mas, size);
                                printText(mas, size);
                                break;
                            case '4':     // sortPriece
                                sortPrice(mas, size);
                                printText(mas, size);
                                break;
                            case '0':     //exit
                                system("cls");
                                break;
                            default:
                                {
                                    system("cls");
                                    cout << "\nВы ввели неверный пункт меню!" << endl;
                                }
                       }
 
                   }while(submenu != '0');
                }
                break;
            case '3':  //Показ рекомендованных книг.
                {
                    system("cls");
                    sortCheck(mas, size);
                    printText(mas, size);
                }
                break;
            case '0':
                break;
            default:
                {
                    system("cls");
                    cout << "Вы ввели неверный пункт меню!" << endl;
                }
        }
 
    }while(menu != '0');
 
    if(mas != 0){
        delete [] mas;
    }
    return 0;
}
= struct.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
#include "module.h"
#include <conio.h>
void textByHund(Books*& mas, int& size){
    system("cls");
 
    int number;
    do{
        cout << "\nСколько книг будем задавать?" << endl;
        cout << "Число книг: " ;
        cin >> number;
 
        if(number <= 0)
            cout << "Число, задаваемых книг, должно быть > 0!" << endl;
    }while(number <= 0);
 
    mas = new Books[size + number];
    for(int i = 0; i < size; ++i)
        mas[i] = mas[i];
 
    for(int i = size; i < size + number; ++i){
        system("cls");
        cout << endl;
 
        cout << "Введите кол-во строк в книге: ";
        cin >> mas[i].tnop;
 
        cout << "Введите автора книги: ";
        cin >> mas[i].writers;
 
        cout << "Введите название книги: ";
        cin >> mas[i].product;
 
        cout << "Введите цену книги: ";
        cin >> mas[i].price;
 
        mas[i].check = false;
    }
    system ("clr");
 
    for(int i = size;i < size + number; ++i){
       if(mas[i].tnop < 100)
           mas[i].check = true;
       else if (mas[i].tnop > 100)
           mas[i].check = false;
    }
}
= textByHand
Кликните здесь для просмотра всего текста
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
#include "module.h"
 
void textFile(Books*& mas, int& size){
    system("cls");
 
    FILE* in;
 
    if(mas != NULL)
        delete [] mas;
 
    do{
        cout << "\n Введите количество рабочих: ";
        cin >> size;
 
        if(size <= 0)             
            cout << "Количество рабочих не может быть <= 0!" << endl;
    }while(size <= 0);
 
    system("cls");
 
    if((in = fopen("BookBase.txt", "r")) != NULL){
        mas = new Books[size];
        int i = 0;
        while(i < size){
            fscanf(in, "%d %s %s %d ", &mas[i].tnop, &mas[i].writers, &mas[i].product, &mas[i].price);
            ++i;
        }
    for(int i = 0;i < size; ++i){
       if(mas[i].tnop < 100)
           mas[i].check = true;
       else if (mas[i].tnop > 100)
           mas[i].check = false;
    }
    fclose(in);
    }
    else
        cout << "Файла с базой в папке нету!" << endl;
}
= textFile
Кликните здесь для просмотра всего текста
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
#include "module.h"
 
void textFileAll(Books*& mas, int& size){ 
    system("cls");
 
    FILE* in;
 
    if(mas != NULL)
        {
 
        delete [] mas;
        mas = NULL;
        }
 
    if((in = fopen("BookBase.txt", "r")) != NULL){
        size = 0;
       
        int i = 0;
        while(!feof(in)){
            Books b;
            fscanf(in, "%d %s %s %d", &b.tnop, &b.writers, &b.product, &b.price);
 
            b.check = false;
            if (b.tnop <= 100) 
                b.check = true; 
            
            if(feof(in))
            {
                break;
            }
 
            Books* tmp = new Books[size + 1];
            for(int j = 0;j < size; ++ j)
                tmp[j] = mas[j];
                    
            if (mas != NULL)
                delete [] mas;
            mas = tmp;
            mas[size] = b;
            ++size;
            ++i;
        }
 
        fclose(in);
    }
    else
        cout << "Файла с базой в папке нету!" << endl;
}
= textFileAll
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
struct Books{
    int tnop; // the number of pages - кол-во строк
    char writers[15]; // писатели
    char product[15]; // произведение
    int price;             //цена
    bool check;                  //проверка
};
char printMenu(int n);
void setStaff(Books*& mas, int& size);
void printText(Books* mas, int& size);
void textFile(Books*& mas, int& size);
void textFileAll(Books*& mas, int& size);
void textByHund(Books*& mas, int& size);
void sortTNOP(Books* mas, int& size);
void sortWriters(Books* mas, int& size);
void sortProduct(Books* mas, int& size);
void sortPrice(Books* mas, int& size);
void sortCheck(Books* mas, int& size);


BookBase.txt:

Кликните здесь для просмотра всего текста
267 Коэльо Алхимик 786
1222 Страуструп Программирование 2500
56 Петров Зима 101
34 Твардовский Тёркин 387
23 Пушкин Выстрел 888
116 Лермонтов Демон 546
312 Толстой Воскресенье 777
99 Есенин Пугачёв 345
567 Гёте Фауст 999


Добавлено через 6 минут
Просто я ваш код не понял с кейсами...
Diemon
17 / 5 / 2
Регистрация: 13.09.2011
Сообщений: 24
01.12.2012, 20:46     из 4 функций сделать одну #7
Цитата Сообщение от dmmax Посмотреть сообщение
Просто я ваш код не понял с кейсами...
Все достаточно просто, вы передаёте в функцию всё те же массивы, и параметр, по которому будет ориентироваться case, таким образом, совмещены все ваши функции сортировки в одну.

Кликните здесь для просмотра всего текста
Но опять же, есть ли смысл в том, чтобы делать столь большую функцию?
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
01.12.2012, 20:49  [ТС]     из 4 функций сделать одну #8
Цитата Сообщение от Diemon Посмотреть сообщение
Все достаточно просто, вы передаёте в функцию всё те же массивы, и параметр, по которому будет ориентироваться case, таким образом, совмещены все ваши функции сортировки в одну.

Кликните здесь для просмотра всего текста
Но опять же, есть ли смысл в том, чтобы делать столь большую функцию?
я понимаю, что можно всё в одну функцию так же запихать, но куда же понятней будет, если они по разным будут функциям, разве нет? не понимаю, почему учителю не понравилось разбитая сортировка. хоть и одинаковая.
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
01.12.2012, 20:55     из 4 функций сделать одну #9
Цитата Сообщение от dmmax Посмотреть сообщение
не понимаю, почему учителю не понравилось разбитая сортировка. хоть и одинаковая.
много копирайта
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
01.12.2012, 20:59  [ТС]     из 4 функций сделать одну #10
Цитата Сообщение от MrGluck Посмотреть сообщение
много копирайта
зато читабельность не пропадает просто другой сортировки не смог придумать
Diemon
17 / 5 / 2
Регистрация: 13.09.2011
Сообщений: 24
01.12.2012, 21:04     из 4 функций сделать одну #11
Цитата Сообщение от dmmax Посмотреть сообщение
я понимаю, что можно всё в одну функцию так же запихать, но куда же понятней будет, если они по разным будут функциям, разве нет? не понимаю, почему учителю не понравилось разбитая сортировка. хоть и одинаковая.
Ещё попробуйте воспользоваться функцией std::swap, позволит вам не пользоваться "tmp" и шикарно меняет местами любые переменные.
Собственно и копирайты пропадут, если ей воспользоваться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2012, 14:48     из 4 функций сделать одну
Еще ссылки по теме:

C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks - C++
C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks

Можно ли сделать список вызова функций? - C++
вообщем идея такая. создать окно, присвоить ему класс со списком функций, которые это окно должно выполнять, и заставить его их...

Как сделать чтобы при компиляции cin>>a>>b>>c; вводить можно было в одну строку? - C++
как сделать чтобы при компиляции cout&lt;&lt;&quot;Ввести А1: &quot;; cin&gt;&gt;a&gt;&gt;b&gt;&gt;c;вводить можно было в одну...

Сделать задачу с использованием функций - Получить последовательность по правилу - C++
Даны действительные числа a1,…,a21. Получить последовательность b1,...,b10 ,где b =a1+a2+…+a24, b2=a1^2+a2^2+…+a24^2,...

Как сделать чтобы значение n сохранилось для всех функций? - C++
Доброго времени суток. Интересует такой вопрос. Нужно реализовать что-то подобное void create(table *str,int n) { int i=0; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
03.12.2012, 14:48  [ТС]     из 4 функций сделать одну #12
Учитель помог, вот ответ:

Кликните здесь для просмотра всего текста
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
#include "module.h"
 
bool compare(Books* b1, Books* b2, char field)
{
    switch(field)
    {
        case '1':      // sortTNOP
            return b1->tnop > b2->tnop;
        case '2':     // sortWriters
            return strcmp(b1->writers, b2->writers) > 0;
        case '3':     // sortProduct
            return strcmp(b1->product, b2->product) > 0;
        case '4':     // sortPriece
            return b1->price > b2->price;
        case '5':
            return b1->check > b2->check;
 
    }
    return false;
}
 
void sort(Books* mas, int size, char field)
{
    bool flag;
    do{
        flag = false;
        for(int i = 0; i < size - 1; ++i)
            if(compare(&mas[i], &mas[i+1], field)){
                Books tmp;
                tmp = mas[i];
                mas[i] = mas[i+1];
                mas[i+1] = tmp;
                flag = true;
            }
    }while(flag);
}


заместо тех 5 сортировок, всё в двух функциях. очень удобно
Yandex
Объявления
03.12.2012, 14:48     из 4 функций сделать одну
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru