Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2019, 21:29   #1
Alexey666
Новичок
Джуниор
 
Регистрация: 28.01.2019
Сообщений: 1
По умолчанию [C++] класс «домашняя библиотека». Как реализовать вывод 5 самых больших книг?

Описать класс «домашняя библиотека» для хранения таких сведений, как
номер в каталоге, название, автор, количество страниц.
Реализовать методы для ввода и вывода всей информации, вывод информации о пяти самых больших книгах.
Не пойму как реализовать вывод информации о пяти самых больших книгах.
Alexey666 вне форума Ответить с цитированием
Старый 29.01.2019, 06:57   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Проще всего отсортировать по убыванию и взять первые пять.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 29.01.2019, 12:10   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,555
По умолчанию

Можно проще, без сортировки всего массива: организовать стек на 5 элементов и за один проход заталкивать в вершину его превышающий. Что-то вроде
if xxx[i].yy > vvv[1].zzz
{ vvv[5].zzz = vvv[4].zzz ;
vvv[4].zzz = vvv[3].zzz ;
vvv[3].zzz = vvv[2].zzz ;
vvv[2].zzz = vvv[1].zzz ;
vvv[1].zzz = xxx[4].yy ; } - ну это сама суть без конкретного описания структур.


PS Попробовал - убедился: обшибся, зряшный совет. Если нам попадется максимальное число, следующее по величине уже никогда в стек не попадет. Сравнивать надо не с вершиной стека, а с минимальным ненулевым его элементом. Возможно, в быстродействии не выиграем, но не исключено, что и проиграем. Зависит от конкретного набора данных.
Комбинированный алгоритм: сортировку по убыванию производить, но не полную, а только 5 проходов, а остальные уж пусть лежат как хотят.
Пардон, сухонького перебрал

Последний раз редактировалось digitalis; 29.01.2019 в 17:03.
digitalis вне форума Ответить с цитированием
Старый 29.01.2019, 12:20   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ну или использовать std::nth_element
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать структуру «Домашняя библиотека» Андрей Иванов Помощь студентам 3 25.05.2015 23:22
Курсовая: Домашняя библиотека Sniti01 Общие вопросы C/C++ 2 11.05.2013 09:39
Выбрать 3 самых больших числа из строки? Ok-Alex Microsoft Office Excel 1 02.11.2011 21:31
Ввести массив вещественных чисел NxM для заданной строки массива найти два самых больших числа (на C#) владислав10 Помощь студентам 1 10.04.2011 14:10
База данных (Домашняя Библиотека) Redas C/C++ Базы данных 3 26.11.2010 20:58