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

Не могу разобраться с сортировкой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ STACK STL http://www.cyberforum.ru/cpp-beginners/thread1049809.html
Будьте добры, обьясните(прокомментируйте) обозначеные строки кода на правильную скобочную последовательность. #include <iostream> #include <stack> #include <string> using namespace std; inline bool LeftBracket(char c) //Что значит inline, и что выполняет даная ф-ция? { return ('(' == c || '{' == c || '' == rb) || ('{' == lb && '}' == rb); }
C++ Пользовательская функция Что такое пользовательская функция? И что делает numb? Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread1049800.html
C++ Дан целочисленный массив с количеством элементов n. напечатать те его элементы, индексы которые являются степенями двойки
Дан целочисленный массив с количеством элементов n. напечатать те его элементы, индексы которые являются степенями двойки(1,2,4,8, и т.д)
C++ Передача дефолтных параметров
Объясню проблему на примере: class TMyControl { public: TMyControl(int param1 = 100, int param2 = 150) { } }; class TMyWrapper
C++ Комментарии к задаче на массив от 0 до 14 http://www.cyberforum.ru/cpp-beginners/thread1049787.html
Здраствуйте , есть задача , примерно понятно все и как , но тонкостей не понимаю, прошу "разжевать" в понятной форме каждую строчку ) Ребят , если не сложно прямо каждую ... Задача - Определить, есть ли в массиве L значение, равное (min +max) / 2 и вывести номер первого значения, если есть, иначе сообщить, что нет. #include <iostream.h> int main() { const int n = 15; int mas;
C++ Дано целое трехзначное число. Определить, равен ли квадрат этого числа сумме кубов его цифр Всем привет.Вот собственно в чем сабж.Не понимаю как сделать эту задачу Дано целое трехзначное число. Определить, равен ли квадрат этого числа сумме кубов его цифр.Выходной файл должен содержать одно слово, 'YES' если квадрат этого числа равен сумме кубов его цифр, и 'NO' в противном случае. подробнее

Показать сообщение отдельно
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
23.12.2013, 13:06     Не могу разобраться с сортировкой
Alex5, http://lmgtfy.com/?q=c%2B%2B+referen...verloading&l=1

Добавлено через 7 минут
Объявление:
C++
1
2
3
4
5
6
7
class GoodsItem
{
public:
    std::string name, shop, manufacture;
    int year, price;
    friend bool operator < (const GoodsItem &item1, const GoodsItem &item2);
};
Реализация:
C++
1
2
3
4
bool operator < (const GoodsItem &item1, const GoodsItem &item2)
{
    return item1.price < item2.price;
}
Весь код:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cstdlib>
 
class GoodsItem
{
public:
    std::string name, shop, manufacture;
    int year, price;
    friend bool operator < (const GoodsItem &item1, const GoodsItem &item2);
};
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value);
 
class GoodsStore : public std::vector<GoodsItem>
{
public:
    void input(const int &amount);
    void printSelected(const int &price);
};
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value);
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
 
    bool running(true);
    GoodsStore store;
 
    while (running) 
    {
        int caseInput;
        std::cout   << "\nВыберете действие:\n"
                    << "1.Ввод\n" 
                    << "2.Вывод\n" 
                    << "3.Вывод по цене\n" 
                    << "4.Выход\n\n";
        std::cin >> caseInput;
 
        switch (caseInput)
        {
        case 1:
            int amount;
            std::cout << "Введите кол-во записей: ";
            std::cin >> amount;
            store.input(amount);
            std::sort(store.begin(), store.end());
            break;
        case 2:
            std::cout << store;
            break;
        case 3:
            int price;
            std::cout << "Введите цену: ";
            std::cin >> price;
            store.printSelected(price);
            break;
        default:
            running = false;
        }
    }
 
    return EXIT_SUCCESS;
}
 
std::ostream& operator << (std::ostream &out, const GoodsItem &value)
{
    out << " Товар: "   << value.name 
        << " Страна: "  << value.manufacture
        << " Год: "     << value.year 
        << " Цена: "    << value.price
        << " Магазин: " << value.shop
        << std::endl;
}
 
std::ostream &operator << (std::ostream &out, const GoodsStore &value) 
{
    out << "Перечень товаров:" << std::endl;
    for (auto it = value.begin(); it != value.end(); ++it)
        out << (*it);
}
 
bool operator < (const GoodsItem &item1, const GoodsItem &item2)
{
    return item1.price < item2.price;
}
 
void GoodsStore::input(const int &amount) 
{
    for (int i = 0; i < amount; ++i) {
        GoodsItem item;
 
        std::cout << "Введите название товара: ";
        std::cin >> item.name;
        std::cout << "Введите страну изготовитель: ";
        std::cin >> item.manufacture;
        std::cout << "Введите год выпуска: ";
        std::cin >> item.year;
        std::cout << "Введите цену: ";
        std::cin >> item.price;
        std::cout << "Введите название магазина: ";
        std::cin >> item.shop;
 
        this->push_back(item);
    }
}
 
void GoodsStore::printSelected(const int &price) 
{
    std::vector<GoodsItem>::iterator item = end();
    for (auto it = begin(); it != end(); ++it)
        if (price == it->price) item = it;
 
    if (item == end()) 
    {
        std::cout << "Товаров с ценой " << price << " нет" << std::endl;
    }
    else std::cout << (*item) << std::endl;
}


Добавлено через 4 минуты
P.S: если перегрузить оператор ввода, то можно будет передавать любой входной поток поддерживающий интерфейс istream, т.е. ifstream, istringstream и т.д.
 
Текущее время: 06:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru