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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Указатели и массивы http://www.cyberforum.ru/cpp-beginners/thread852060.html
Если у меня есть две функции, в одной из которых объявлен динамический массив и указатель на него.А во второй функции входным параметром является указатель на тот самый динамический массив. Сначала выполняется первая функция, в которой что-то сохраняется в массив, потом вторая, где из массива информация переписывается еще куда-то.Т.е. массив уже нам не нужен. Если я в второй функции напишу: ...
C++ Ввод и вывод матрицы Сделать ввод и вывод матрицы.Числа рандомно . Потом транспонировать ее. http://www.cyberforum.ru/cpp-beginners/thread852058.html
C++ Построить бинарное дерево поиска, повторяющиеся значения в дерево не добавлять
Пользователь вводит с клавиатуры целые числа ( ввод прекращается, когда будет введен ‘0’). Построить бинарное дерево поиска, повторяющиеся значения в дерево не добавлять. Разработать функцию, возвращающую сумму значений узлов самой длинной ветви дерева.
Создать новый файл, содержащий элементы ненулевой части данной матрицы (по строкам) C++
Дан файл вещественных чисел, содержащий элементы нижнетреуголь- ной матрицы (по строкам). Создать новый файл, содержащий элементы ненулевой части данной матрицы (по строкам).
C++ Создать новый строковый файл, содержащий все зимние даты из исходного файла (в обратном порядке) http://www.cyberforum.ru/cpp-beginners/thread852048.html
Дан строковый файл, содержащий даты в формате «день/месяц/год». Создать новый строковый файл, содержащий все зимние даты из исходного файла (в обратном порядке). Если даты с требуемым временем года в файле отсутствуют, то оставить результирующий файл пустым.
C++ Удалить все элементы файла, расположенные после первого символа пробела, включая и этот пробел Дан симв. файл, содержащий по крайней мере один символ про- бела. Удалить все его элементы, расположенные после первого символа пробела, включая и этот пробел. подробнее

Показать сообщение отдельно
IvanInanovich
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 113
29.04.2013, 17:11     Сортировка указателей
Добрый день. Нужно создать функцию, которая будет сортировать массив указателей по зарплате работников.

Написал следующий код:


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
#include <iostream>
#include <string>                 
using namespace std;
////////////////////////////////////////////////////////////////
class person                      
   {
   protected:
      string name;
      float salary;                
   public:
      void setdata()              
         { 
           cout << "Enter name: "; cin >> name;
           cout << "Enter salary: "; cin >> salary;
         }
      void printdata()           
         { 
            cout <<  "\nName: " << name << endl
                 << "Salary: " << salary << endl; 
            
         }
      string getname()
        { return name; }
        
        float gatsalary()
        { return salary; }
   };
////////////////////////////////////////////////////////////////
int main()
{
void salsort(person**,const int);
 
       person* array[15];
       char i = 'd';
       int n = 0;
       do
       {
           array[n]= new person;
           array[n]->setdata();
           n++;
           cout << "\nAgain? "; cin >> i;
       }
       while (i == 'd');
 
        cout << "\n\nNO SORTED ARRAY \n ______________________________: ";
        for(int i = 0; i < n; i++)
        array[i]->printdata();
 
 
 
       salsort(array,n);
 
       cout << "\n\nSORTED ARRAY \n ______________________________: ";
       for(int i = 0; i < n; i++)
        array[i]->printdata();
 
 
 
   return 0;
   } 
 
void salsort(person** arr, const int n)
{
    int i,j;
 
    for(i=0; i < n-1; i++)
        for(j=0; j < n; j++)
            if((*(arr+i))->gatsalary() > (*(arr+j))->gatsalary());
                {
                    person* temp = *(arr+i);
                    *(arr+i) = *(arr+j);
                    *(arr+j) = temp;
                }
 
}
2 проблемы:
1. Программа закрывается аварийно. Ночью была похожа ситуация с другой программой, которая категорически отказывалась работать в течении часа. Затем тот же самый код на удивление стал работать нормально. Возможно снова глюк.
Причем вылазит ошибка во время последней итерации вывода данных.
2. Не сортируется массив указателей. Видно накосячил в функции salsort.
Можете подсказать что не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru