Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
12 / 12 / 1
Регистрация: 11.07.2021
Сообщений: 167

Не работает функтор

25.07.2022, 19:07. Показов 858. Ответов 3
Метки c++, stl (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите пожалуйста, что я делаю не так? Программа падает на 60 строке.
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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <memory>
 
struct Review
{
    std::string title;
    int rating;
    double price;
 
    Review() : title(""), rating(0), price(0.0) {}
    Review(const std::string& t, int r, double p)
    : title(t), rating(r), price(p) {}
};
 
Review FillReview();
void ShowReview(std::shared_ptr<Review> shp);
bool NameInAlphabetical(const std::shared_ptr<Review>& shp1, const std::shared_ptr<Review>& shp2);
 
int main()
{
    std::vector<std::shared_ptr<Review>> vec;
 
    char ch = 'y';
    while (ch == 'y')
    {
        vec.push_back(std::make_shared<Review>(FillReview()));
        std::cout << "Contunie <y/n>: ";
        (std::cin >> ch).get();
    }
 
    std::cout << '\n';
    /*std::for_each(vec.begin(), vec.end(), ShowReview);*/
 
    ch = 'y';
    while (ch == 'y')
    {
        std::cout << "1 - Display books in original format\n" <<
            "2 - Display books in alphabetical order\n" <<
            "3 - In ascending order of rating\n" <<     // в порядке возрастания рейтинга
            "4 - In descending order of rating\n" <<    // в порядке убывания рейтинга
            "5 - In descending order of price\n" <<     // в порядке уменьшения цены
            "0 - Exit\n";
 
        int choice;
        std::cout << "Your choice: ";
        std::cin >> choice;
        while (choice >= 6 || choice < 0)
        {
            std::cout << "Try again (range 0-5): ";
            std::cin >> choice;
        }
            
        if (choice == 1)
            std::for_each(vec.begin(), vec.end(), ShowReview);
        if (choice == 2)
        {
            std::sort(vec.end(), vec.begin(), NameInAlphabetical);
            std::for_each(vec.begin(), vec.end(), ShowReview);
        }
 
        std::cout << "Contunie <y/n>: ";
        (std::cin >> ch).get();
    }
 
    return 0;
}
 
Review FillReview()
{
    std::string t;
    int r;
    double p;
 
    std::cout << "Enter book title: ";
    std::getline(std::cin, t);
 
    std::cout << "Enter book rating: ";
    std::cin >> r;
 
    std::cout << "Enter book price: ";
    std::cin >> p;
 
    // Избавиться от остальной части строки ввода
    while (std::cin.get() != '\n')
        continue;
 
    return Review(t, r, p);
}
 
void ShowReview(std::shared_ptr<Review> shp)
{
    std::cout << "Book title: " << shp->title << '\n' <<
        "Book rating: " << shp->rating << '\n' <<
        "Book price: " << shp->price << "\n\n";
}
 
bool NameInAlphabetical(const std::shared_ptr<Review>& shp1, const std::shared_ptr<Review>& shp2)
{
    return (shp1->title < shp2->title ? true : false);
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.07.2022, 19:07
Ответы с готовыми решениями:

Не работает шаблонный функтор :(
#include &lt;bits/stdc++.h&gt; using namespace std; template&lt;typename cType&gt; struct myMax { myMax() {}; cType operator()(const...

Функтор
Доброго времени суток!:) есть программа, которая демонстрирует передачу объекта функции по ссылке: #include &lt;iostream&gt; ...

Нужен функтор с ограничением
{-# LANGUAGE FlexibleInstances,DeriveFunctor #-} data A a = A a a deriving Functor data B a b = B a b instance Num a =&gt; Functor...

3
Just Do It!
 Аватар для XLAT
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 3
25.07.2022, 19:25
Лучший ответ Сообщение было отмечено nik_serebryakov как решение

Решение

Цитата Сообщение от nik_serebryakov Посмотреть сообщение
std::sort(vec.end(), vec.begin(), NameInAlphabetical);
C++
1
    std::sort(vec.begin(), vec.end(), NameInAlphabetical);
?
1
12 / 12 / 1
Регистрация: 11.07.2021
Сообщений: 167
25.07.2022, 19:38  [ТС]
XLAT, Спасибо
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
27.07.2022, 13:33
Цитата Сообщение от nik_serebryakov Посмотреть сообщение
return (shp1->title < shp2->title ? true : false);
а почему не
C++
1
return shp1->title < shp2->title;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.07.2022, 13:33
Помогаю со студенческими работами здесь

Функтор и перегруженный оператор
захотел понять многопоточность в новом стадарте с++11 - смотрю http://sergeyteplyakov.blogspot.ru/2012/05/c-11-faq.html#std-threads - вижу...

Что такое функтор
Доброе утро, верное ли данное утверждение: Я считаю, что нет. (1) Код ниже - в местах где принимается абстракция по...

Не понимаю как создать функтор
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int sum(int c, int d, vector&lt;int&gt; a) { int s = 0; for...

Функтор списка (swi prolog)
Ввожу цель A= .(a, ). И хотел бы увидеть ответ A= или A=(b, .(a, )). ...

Класс-функтор с использованием foreach и transform
Добрый вечер господа, Не считает правильно сумму. Выдает феерично большое число. Не подскажите в чем проблема? #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru