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

Сортировка объектов через указатели, основанная на алфавитном порядке имен - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Решение матриц, запись результатов в файл http://www.cyberforum.ru/cpp-beginners/thread1180564.html
Моя головная боль, помогите пожалуйста! В файл a.txt записать средствами текстового редактора значения элементов целочисленной матрицы А размером 4x4, а в файл b.txt - значения элементов матрицы В размером 4x4. Вычислить матрицу С=(4В А-В^2)^3, использовав функции пользователя. Результаты вычислений занести в файл c.txt.
C++ Вывести в файл числа, цифры которых чередуются как четные/нечетные дан текстовый файл с изображениям целых чисел. в выходной файл поместить те и них ,у которых имеются чередование четных и нечетных http://www.cyberforum.ru/cpp-beginners/thread1180561.html
работа с тракторами текстовыми файлами C++
Дан текстовый файл с изображениями целых чисел. В выходной файл поместить среднее арифметическое каждого числа. На экран вывести количество чисел во входном файле, количество в выходном файле. После обработки и чтения результаты так же помещаются в выходной текстовый файл в виде символьных изображений чисел. Содержимое входного и выходного файлов выводить на экран.
Как реализовать автоматический посимвольный вывод текста? C++
Подскажите, пожалуйста, как реализовать автоматический посимвольный вывод текста? Допустим, есть какая-то фраза: "Быть или не быть!". Вот нужно, чтобы эта фраза выводилась в консоль побуквенно с определенной небольшой задержкой. Как бы имитация ручного набора.
C++ Редактирование разметки, ACSII http://www.cyberforum.ru/cpp-beginners/thread1180495.html
хочу текстовик сделать научите как менять в консоле шрифт, как менять язык, как менять цвет, как делать его жирным ну и т.д. и вообще где можно посматреть коды цветов, спец символов и т.д. обмазываюсь visual studio c++ 2013
C++ Ошибка с динамической памятью Очень прошу помочь исправить ошибку в области дин.памяти. Проблема: 1. Шаг Создаю массив для записи 2. Шаг удаляю элемент под номером k, и тут вылетает крит. Примечание: Если запускать с отладчиком (F5) крит не вылетает, и программа работает. Код: #include <iostream> #include <fstream> подробнее

Показать сообщение отдельно
Purcell
 Аватар для Purcell
0 / 0 / 0
Регистрация: 14.08.2013
Сообщений: 20
19.05.2014, 10:45     Сортировка объектов через указатели, основанная на алфавитном порядке имен
Нашел в книге пример сортировки объектов, содержащих поле типа string, через указатели. Сортировка основана на алфавитном порядке имен. После примера в книге написано о функции order(), что "мы воспользовались библиотечной функцией C++ strcmp()." Я удивился, так как в функции order() я не увидел функцию strcmp(). Каким в таком случае образом функция order() сортирует в алфавитном порядке?

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
#include <iostream>
#include <string>
using namespace std;
////////////////////////////////////////////////////////////
class Person                // некоторый человек
{
    protected:
        string name;        // имя
    public:
        void setName()      // установка имени
        { cout << "Введите имя: "; cin >> name; }
        void printName()    // показ имени
        { cout << endl << name; }
        string getName()    // получение имени
        { return name; }
};
////////////////////////////////////////////////////////////
int main()
{
    void bsort(Person**, int);      // сортировка указателей
    Person* persPtr [ 100 ];        // массив указателей на person
    int n = 0;                      // количество элементов в массиве
    char choice;                    // переменная для выбора
 
    do
    {
        persPtr [ n ] = new Person;      // новый объект
        persPtr [ n ] -> setName();      // ввод имени
        n++;
        cout << "Продолжить ввод(y/n)? ";
        cin >> choice;
    }
    while( choice == 'y');
 
    cout << endl << "Неотсортированный список: ";
    for (int j = 0; j < n; j++)
        persPtr [ j ] -> printName();
 
    bsort (persPtr, n);              // сортировка указателей
 
    cout << endl << "Отсортированный список: ";
    for (int j = 0; j < n; j++)
        persPtr [ j ] -> printName();
    cout << endl;
 
    return 0;
}
////////////////////////////////////////////////////////////
void bsort(Person** pp, int n)       // сортировка указателей
{
    void order(Person**, Person**);  // сортировка двух элементов
    int j, k;
 
    for (j = 0; j < n; j++)
        for (k = j + 1; k < n; k++)
            order(pp + j, pp + k);   // сортировка двух элементов
}
////////////////////////////////////////////////////////////
void order(Person** pp1, Person** pp2)  // сортировка двух элементов
{
    if((*pp1) -> getName() > (*pp2) -> getName())  // если первая строка больше второй
    {
        Person* tempptr = *pp1;                    // они меняются местами
        *pp1 = *pp2;
        *pp2 = tempptr;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru