Форум программистов, компьютерный форум 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' в противном случае. подробнее

Показать сообщение отдельно
denstan
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
23.12.2013, 15:39     Не могу разобраться с сортировкой
Цитата Сообщение от outoftime Посмотреть сообщение
denstan, я писал для g++ и компилировал с флагом std=c++11

Добавлено через 3 минуты
Этот код
Кликните здесь для просмотра всего текста
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 (int i = 0; i < value.size(); ++i)
        out << value[i];
}
 
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 (std::vector<GoodsItem>::iterator 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;
}

Компилируется с флагом -std=c++98, по идее VS6.0 потянет.
где этот флаг ставить?

Добавлено через 3 минуты
Цитата Сообщение от outoftime Посмотреть сообщение
denstan, я писал для g++ и компилировал с флагом std=c++11

Добавлено через 3 минуты
Этот код
Кликните здесь для просмотра всего текста
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 (int i = 0; i < value.size(); ++i)
        out << value[i];
}
 
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 (std::vector<GoodsItem>::iterator 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;
}

Компилируется с флагом -std=c++98, по идее VS6.0 потянет.
хм...поставил g++
начал компилировать в vs+6.0 и теперь начал ругаться

c:\program files (x86)\microsoft visual studio\myprojects\7777\777.cpp(77) : error C4716: 'operator<<' : must return a value
c:\program files (x86)\microsoft visual studio\myprojects\7777\777.cpp(84) : error C4716: 'operator<<' : must return a value
 
Текущее время: 00:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru