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

Сортировка массива структур через сортировку массива указателей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Построить класс для работы с датой http://www.cyberforum.ru/cpp-beginners/thread1123637.html
Добрый день товарищи, очень нужна помощь, буду благодарен каждому ответу. Задание: Постpоить класс для работы с датой. Класс должен включать следующие поля: число, месяц, год, день недели. Класс должен обеспечивать пpостейшие методы для pаботы с полями класса: изменение значе-ний, вывод значений.
C++ Вывод дробной части Всем привет. Проблема собственно такая, не получается вывести дробную часть стороны треугольника, т.е 4,5(выводит только 4) уже не выводит, менял тип переменных, тип вычисления на float, высчитывает но почему-то длина стороны получается еще меньше чем в первом случае(при выводе целой части). Помогите, в чем проблема? вот код: #include <iostream.h> #include <math.h> #include <stdio.h> int... http://www.cyberforum.ru/cpp-beginners/thread1123624.html
Сформировать вектор D (n) из произведений абсолютных ненулевых значений соответствующих строк матрицы C++
Задана матрица целых чисел A(n×n). Все числа-палиндромы, расположенные на главной диагонали, заменить суммой цифр модуля минимального элемента соответствующего столбца матрицы. Сформировать вектор D(n) из произведений абсолютных ненулевых значений соответствующих строк матрицы.
C++ Как сделать голосовой поток вывода?
Ну то есть скармливаешь ему строку оператором <<, а он её читает через динамики. Как это сделать?
C++ Структуры. Создать массив из 10 точек, сгенерировать случайным образом координаты и массы http://www.cyberforum.ru/cpp-beginners/thread1123555.html
люди, у меня осталось одно задание: Структурный тип содержит поля: координаты х,у и массу материальной точки. Создать массив из 10 точек, сгенерировать случайным образом координаты и массы, вывести данные о всех точках и координаты центра масс системы. вообще со структурами не дружу и не понимаю что от меня даже требуется, помогите кто чем сможет Добавлено через 4 минуты правильно ли я...
C++ Работа с файлами, запись, обработка и чтение доброго времени суток, мне нужно: Создать текстовый файл, содержащий целые значения, следующего формата: 15 13 21 42 37 50 9 2. Считать из файла записанные данные и заменить нулем каждое значение файла, кратное минимальному числу. в файл я числа записать смог, но не могу их считать и записать в каакие-либо переменные, как обработать знаю, и обратно вписать новые значения смогу, не... подробнее

Показать сообщение отдельно
montkay
10 / 10 / 8
Регистрация: 19.02.2014
Сообщений: 72
19.03.2014, 10:41     Сортировка массива структур через сортировку массива указателей
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку - помогите, пожалуйста.

Код программы:

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
#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;
};
 
typedef bool (*tFunc1)(double Left, double Right);
typedef bool (*tFunc2)(int Left, int Right);
typedef bool (*tFunc3)(char Left, char Right);
void inite(student * pStud, int k);
void show(student * pStud, int k);
void sort(student **ppStud, int k, char ch);
template <typename temp>
bool Asc(temp Left, temp Right);
template <typename temp>
bool Desc(temp Left, temp Right);
int main()
{   
    cout << "Enter the number of students: ";
    int k;
    while (cin >> k && (k < 1))
        cout << "There is no sence to create the list without\n"
                "even one student. Enter another number: ";
    student * pStud = new student [k];
    inite(pStud, k);
    show(pStud, k);
    cout << "Press 1 in order to sort the students\n"
            "in Ascent, and 2 - in Descent: ";
    char ch;
    while (cin >> ch && ch != '1' && ch != '2')
        cout << "Enter another number: ";
    sort(&pStud, k, ch);
    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 << char (196);
    cout << char (194);
    for (int i = 0; i < 10; ++i)
        cout << char (196);
    cout << char (194);
    for (int i = 0; i < 9; ++i)
        cout << char (196);
    cout << char (194);
    for (int i = 0; i < 5; ++i)
        cout << char (196) << char (196) << char (194);
    for (int i = 0; i < 12; ++i)
        cout << char (196);
    cout << char (191) << endl;
    cout << char (179) << setw(3) << "Num" << char (179);
    cout << setw(ArSize) << "First name" << char (179);
    cout << setw(ArSize-1) << "Last name" << char (179);
    for (int i = 0; i < n; ++i)
        cout << "#" << i + 1 << char (179);
    cout << "Average mark" << char (179) << endl;
    for (int j = 0; j < k; ++j)
    {
        cout << char (195);
        for (int i = 0; i < 3; ++i)
            cout << char (196);
        cout << char (197);
        for (int i = 0; i < ArSize; ++i)
            cout << char (196);
        cout << char (197);
        for (int i = 0; i < ArSize - 1; ++i)
            cout << char (196);
        cout << char (197);
        for (int i = 0; i < 5; ++i)
            cout << char (196) << char (196) << char (197);
        for (int i = 0; i < 12; ++i)
            cout << char (196);
        cout << char (180) << endl;
        cout << char (179) << setw(3) << j + 1 << char (179);
        cout << setw(ArSize) << pStud[j].name << char (179);
        cout << setw(ArSize-1) << pStud[j].surname << char (179);
        for (int i = 0; i < n; ++i)
            cout << " " << pStud[j].notes[i] << char (179);
        cout << setw(8) << pStud[j].average << setw(5) << char (179);
        cout << endl;
    }
    cout << char (192);
    for (int i = 0; i < 3; ++i)
        cout << char (196);
    cout << char (193);
    for (int i = 0; i < 10; ++i)
        cout << char (196);
    cout << char (193);
    for (int i = 0; i < 9; ++i)
        cout << char (196);
    cout << char (193);
    for (int i = 0; i < 5; ++i)
        cout << char (196) << char (196) << char (193);
    for (int i = 0; i < 12; ++i)
        cout << char (196);
    cout << char (217) << endl << endl;
}
template <typename temp>
bool Asc(temp Left, temp Right)
{
    return Left > Right;
}
template <typename temp>
bool Desc(temp Left, temp Right)
{
    return Left < Right;
}
void sort(student **ppStud, int k, char ch)
{
    tFunc1 pFunc1;
    if (ch == '1')
        pFunc1 = Asc;
    else
        pFunc1 = Desc;
    student *pTemp = new student;
    for (int i = 0; i < k - 1; ++i)
    {
        int f = i + 1;
        for (int j = i + 2; j < k; ++j)
            if (pFunc1(ppStud[f]->average, ppStud[j]->average))
                f = j;
        if (!pFunc1(ppStud[f]->average, ppStud[i]->average))
        {
            pTemp = ppStud[f];
            ppStud[f] = ppStud[i];
            ppStud[i] = pTemp;
        }
    }
    delete pTemp;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru