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

Сортировка элементов массива структур шаблонной функцией - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск медианного элемента http://www.cyberforum.ru/cpp-beginners/thread1117769.html
Есть программа.. подскажите что с матрицами не так.. вектор вроде все отлично! Нужно в матрице доделать.. Array.h template <class T> class Vector { T* values; size_t count; public:
C++ Неверная кодировка при чтении из файла Время доброе) Скажу сразу, что честно гуглил и рылся, но ответа так и не нашел. Пишу для себя программку, чтобы было удобно учить английские слова) Столкнулся вот с такой проблемой: кодировка русского текста в файле не совпадает с русской "кодировкой клавиатуры", если можно так сказать. Это все, что я сумел выяснить. Собственно, как это преодолеть? Т.е. мне нужно, чтобы в консоли и корректно... http://www.cyberforum.ru/cpp-beginners/thread1117765.html
C++ Решение нелинейных уравнений
Нужно две программы по блок схемам на картинках , которые решают данное уравнение x^3+3x^2+6x-1=0 двумя способами: 1.Методом хорд 2.Методом простой итерации
C++ В одномерном массиве найти сумму между первым и вторым положительными элементами
в одномерном массиве найти сумму между первым и вторым положительными элементами часть кода программы #include "stdafx.h" #include "iostream" #include "math.h" using namespace std; int main () { const int n = 10; int a; for ( int i=0; i<n; i++)
C++ Вывод массива из функции С++ http://www.cyberforum.ru/cpp-beginners/thread1117692.html
Вобщем, нашел код в интернете (консольное приложение) алгоритм Дейкстра #include<iostream.h> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> #define word unsigned int int i, j, n, p, xn, xk; int flag;
C++ Не компилирует в MVS 2008 Господамы вот такая программа для проверки устного умножения в MVS 2008 ругается на time, srand и rand, в чем может быть проблема? #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { setlocale (LC_CTYPE, "Russian"); int num1, num2; подробнее

Показать сообщение отдельно
montkay
10 / 10 / 8
Регистрация: 19.02.2014
Сообщений: 72
12.03.2014, 23:38     Сортировка элементов массива структур шаблонной функцией
Как отсортировать с помощью шаблонной функции по значению полей в массиве структур? Кто знает, подскажите пожалуйста. Программа, которую написал, выглядит так:

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
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <time.h>
#include <memory.h>
#include <memory>
#include <stdlib.h>
#include <iomanip>
using namespace std;
const int ArSize = 10;
const int n = 5;
struct student              // структура, в которой находятся имя, фамилия, оценки и средняя оценка студента
{
    char name[ArSize];      // имя
    char surname[ArSize];   // фамилия
    int notes[n];           // массив, в котором находятся пять оценок
    double average;         // средняя оценка
};
void inite(student * pStud, int k); // создание массива структур, где указаны студенты с их оценками
void show(student * pStud, int k);  // отображение этого массива
template <typename t>
void sort_t(t *pArr, int k);        // вот эту функцию хотелось бы сделать пригодной для сортировки не только по среднему значению,
                                    // но и по другим оценкам.
int main()
{   
    cout << "Enter the number of students: ";
    int k;
    while (cin >> k)
    {
        if (k < 1)
            cout << "There is no sence to create the list without\n"
                    "even one student. Enter another number: ";
        else
            break;
    }
    student * pStud = new student [k];
    inite(pStud, k);
    show(pStud, k);
    sort_t(pStud, k);
    show(pStud, k);
    delete [] pStud;
}
void inite(student * pStud, int k)
{
    srand(unsigned (time(0)));
    char name_stud[5][25] = {"Ludvig", "Sasha", "Amadei", "Karl", "Salvador"};
    char surname_stud[5][25] = {"Bethoven", "Ten", "Mozart", "Marks", "Dali"};
    for (int i = 0; i < k; ++i)
    {
        strcpy_s(pStud[i].name, name_stud[rand()%5]);
        strcpy_s(pStud[i].surname, surname_stud[rand()%5]);
        for (int j = 0; j < n; ++j)
            pStud[i].notes[j] = rand()%3 + 3;
        int sum = 0;
        for (int j = 0; j < n; ++j)
            sum += pStud[i].notes[j];
        pStud[i].average = (double) sum/n;
    }
}
void show(student * pStud, int k)
{
    cout << endl;
    cout << char (218);
    for (int i = 0; i < 3; ++i)
        cout << "-";
    cout << char (194);
    for (int i = 0; i < 10; ++i)
        cout << "-";
    cout << char (194);
    for (int i = 0; i < 9; ++i)
        cout << "-";
    cout << char (194);
    for (int i = 0; i < 5; ++i)
        cout << "--" << char (194);
    for (int i = 0; i < 12; ++i)
        cout << "-";
    cout << char (191) << endl;
    cout << "|" << setw(4) << "Num|";
    cout << setw(ArSize) << "First name" << "|";
    cout << setw(ArSize-1) << "Last name" << "|";
    for (int i = 0; i < n; ++i)
        cout << "#" << i + 1 << "|";
    cout << "Average mark" << "|" << endl;
    for (int j = 0; j < k; ++j)
    {
        cout << char (195);
        for (int i = 0; i < 3; ++i)
            cout << "-";
        cout << char (197);
        for (int i = 0; i < ArSize; ++i)
            cout << "-";
        cout << char (197);
        for (int i = 0; i < ArSize - 1; ++i)
            cout << "-";
        cout << char (197);
        for (int i = 0; i < 5; ++i)
            cout << "--" << char (197);
        for (int i = 0; i < 12; ++i)
            cout << "-";
        cout << char (180) << endl;
        cout << "|" << setw(3) << j + 1 << "|";
        cout << setw(ArSize) << pStud[j].name << "|";
        cout << setw(ArSize-1) << pStud[j].surname << "|";
        for (int i = 0; i < n; ++i)
            cout << " " << pStud[j].notes[i] << "|";
        cout << setw(8) << pStud[j].average << setw(5) << "|";
        cout << endl;
    }
    cout << char (192);
    for (int i = 0; i < 3; ++i)
        cout << "-";
    cout << char (193);
    for (int i = 0; i < 10; ++i)
        cout << "-";
    cout << char (193);
    for (int i = 0; i < 9; ++i)
        cout << "-";
    cout << char (193);
    for (int i = 0; i < 5; ++i)
        cout << "--" << char (193);
    for (int i = 0; i < 12; ++i)
        cout << "-";
    cout << char (217) << endl << endl;
}
template <typename t>
void sort_t(t *pArr, int k)
{
    t *pTemp = new t;
    for (int i = 0; i < k - 1; ++i)
    {
        int f = i + 1;
        for (int j = i + 2; j < k; ++j)
            if (pArr[f] > pArr[j])
                f = j;
        if (pArr[f] < pArr[i])
        {
            *pTemp = pArr[f];
            pArr[f] = pArr[i];
            pArr[i] = *pTemp;
        }
    }
    delete pTemp;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru