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

IComparable - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ упаковка и распаковка файлов Zlib или любой другой способ http://www.cyberforum.ru/cpp-beginners/thread1022584.html
Здравствуйте, возникла такая проблема, немогу упаковать файл и распаковать, пытаюсь использовать Zlib, http://www.zlib.net/manual.html читал вот тут, но всё равно хоть и прочитал ничего не получается, Пытался сначало открыть файл как бинарный а потом записать с помощью gzwrite, но файл который был размером 7 метров(pdf) упаковался в архив 29 байт, не могу разобраться уже 3 дня, если можно...
C++ Что такое std::string() И скал в гугле- там ничего понимаемого. Начну, что я вообще в символьных не шарю. Обьясните пожалуста, что это и что оно делает. Нашол String class Strings are objects that represent sequences of characters. The standard string class provides support for such objects with an interface similar to that of standard containers, but adding features specifically designed to operate with... http://www.cyberforum.ru/cpp-beginners/thread1022578.html
C++ Присвоить целую переменную k, что равняется третей от конца цифр в записе целого позитивного числа x
Вот задание, кому не трудно помогите сделать код. Присвоить целую переменную k, что равняется третей от конца цифр в записе целого позитивного числа x.
Среднее арифметическое массива до 0 ! C++
Дано последовательность целых чисел(массив), за которим следует 0. Найти среднее арифметическое массива до 0. (в форме)
C++ Посчитать сумму всех отрицательных элементов матрицы и заменить суммой каждый третий элемент http://www.cyberforum.ru/cpp-beginners/thread1022570.html
Дан двумерный массив A nxm. Посчитать сумму всех отрицательных элементов и заменить этой суммой каждый третий элемент. Написать программу.
C++ заменить на слова перевертыши Дана строка состоящая из нескольких слов, слова разделены пробелом, нужно вывести строку в которой каждое слово заменяется словом перевертышем...например вводится abc def gfi заменит и вывести на cba fed ifg... народ объясните как тут прописать условие? помогите пожалуйста подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,427
29.11.2013, 01:21     IComparable
Цитата Сообщение от Ortaz Посмотреть сообщение
class MyClass: public IComparable{}
IComparable определен вообще?

Пример с сортированным множеством пользовательского типа (для сравнения используется оператор <)
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
// Litvinov Danila, 12.12.2012
#include <iostream>
#include <set>
#include <string>
#include <cstdlib>
#include <clocale>
#include <conio.h>
using namespace std;
 
 
class Train
{
    public:
        Train() {} // конструктор по-умолчанию
        // аргументированные конструкторы, используют список инициализации
        Train(int number, const string &station, const string &time) :
            number_(number), station_(station), time_(time) {}
        // для поиска по значению number
        Train(int number) : number_(number) {}
 
        // get-методы. модификатор const после функции указывает, что она не
        // изменяет состояние класса (все свойства остаются теми же)
        int    getNumber()  const { return number_; }
        string getStation() const { return station_; }
        string getTime()    const { return time_; }
 
    private:
        int number_; // поля класса
        string station_;
        string time_;
};
 
// определяем оператор сравнения двух объектов класса. Необходимо для
// использования объектов в контейнере set (ключ сортировки будет number)
bool operator < (const Train &t1, const Train &t2)
{
    return t1.getNumber() < t2.getNumber(); // если t1.number_ меньше, то истина
}
 
// перегружаем оператор вывода в поток, чтобы научить выводить объекты класса
ostream& operator << (ostream &out, const Train &t)
{
    out << "Номер поезда: " << t.getNumber() << endl // формируем поток
        << "Станция назначения: " << t.getStation() << endl
        << "Время прибытия: " << t.getTime() << endl;
    return out; // возвращаем ссылку на сформированный поток
}
 
 
int main()
{
    setlocale(LC_ALL, ""); // настраиваем консоль на ввод/вывод русских символов
    set<Train> tset; // Создаем set-контейнер объектов класса Train
    char choise = '1'; // выбор в меню
    while (choise != '0')
    {
        system("cls"); // очистка экрана
        cout << "Что желаете сделать?\n"
             << "1. Ввести новый элемент\n"
             << "2. Вывести все элементы\n"
             << "3. Поиск по номеру поезда\n"
             << "4. Поиск по названию станции назначения\n"
             << "0. Выход\n\n"
             << "Ваш выбор: ";
        cin >> choise;
        switch (choise)
        {
            case '1' :
            {// фигурные скобки чтобы переменные объявленные тут были локальными
                int number;
                string station, time;
                system("cls"); // очистка экрана
                cout << "Введите номер поезда: ";
                cin >> number;
                cout << "Введите станцию назначения: ";
                cin >> station;
                cout << "Введите время прибытия: ";
                cin >> time;
                // добавляем новый объект класса Train вызывая аргументированный
                // конструктор и передавая ему параметры
                tset.insert (Train (number, station, time));
                break;
            }
 
            case '2' :
                system("cls");
                if (tset.empty()) // если контейнер пуст
                {
                    cout << "БД пуста, добавьте для начала элементы";
                    getch(); // пауза
                    break;
                }
                // пробегаемся по всему контейнеру от начала до конца
                // it - итератор (грубо говоря указатель) на объект класса Train
                for (set<Train>::iterator it = tset.begin();
                     it != tset.end(); ++it)
                    cout << *it << endl; // уже умеет выводить объект на экран
                getch(); // пауза
                break;
 
            case '3' :
            {
                system("cls");
                if (tset.empty()) // если контейнер пуст
                {
                    cout << "БД пуста, добавьте для начала элементы";
                    getch(); // пауза
                    break;
                }
                int number;
                cout << "Введите номер поезда: ";
                cin >> number;
                // метод контейнера find вернет итератор на искомый объект, если
                // совпадений нет, то станет равным концу контейнера (set.end())
                // Происходит поиск по уникальному ключу
                set<Train>::iterator it = tset.find(number);
                if (it == tset.end())
                    cout << "Нет сопадений";
                else
                    cout << *it;
                getch();
                break;
            }
 
            case '4' :
            {
                system("cls");
                if (tset.empty()) // если контейнер пуст
                {
                    cout << "БД пуста, добавьте для начала элементы";
                    getch(); // пауза
                    break;
                }
                string station;
                cout << "Введите станцию назначения: ";
                cin >> station;
                // поиск с помощью метода find не сработает, т.к. string station
                // не является ключом контейнера (элементом, по которому идет
                // сравнение при добавлении. Вдобавок, объектов со схожим полем
                // может быть несколько, поэтому просто перебираем весь
                // контейнер и при совпадении выводим на экран
                for (set<Train>::iterator it = tset.begin();
                     it != tset.end(); ++it)
                    if (it->getStation() == station) // если совпадение
                        cout << *it << endl;
                getch(); // пауза
                break;
            }
 
            case '0' :
                break;
 
            default :
                cout << "Неверный ввод, повторите попытку";
                getch();
                break;
        } // конец switch (choise)
    } // конец цикла while (choise != '0')
 
    cout << "\n\nДо свидания!\n";
 
    return 0; // завершилось без ошибок
}
 
Текущее время: 16:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru