170 похожих чатов

Есть бинарный файл, который я считываю через fread в массив

books. год книги хранится в books.god, страницы - books.stranic
нужно найти по 1 книге каждого года, с самым большом кол-вом страниц. можно такое как-нибудь организовать? хотя бы алгоритм подкиньте :((

18 ответов

13 просмотров
Flooks- Автор вопроса

если нужно, могу кинуть код функции

Можно отсортировать исходный массив объектов по году, затем в каждом годе искать макс. кол-во страниц. Стандартные алгоритмы для реализации: std::sort/std::stable_sort; std::max_element;

Flooks- Автор вопроса
Denys Khodakov
Можно отсортировать исходный массив объектов по го...

а если вручную, циклами? сортировку годов сделал, вопрос в поиске макс. кол-во страниц в каждом году

Можно мапку вида <год, книга с самым большим количеством страниц>

Flooks
а если вручную, циклами? сортировку годов сделал, ...

А, так сортировку сделали. В чем проблема тогда возникает?

Flooks- Автор вопроса
Flooks- Автор вопроса
Vladimir
А, так сортировку сделали. В чем проблема тогда во...

во 2 сортировке, уже по страницам, учитывая года

Flooks
во 2 сортировке, уже по страницам, учитывая года

Хорошо. А на каком этапе проблема возникает?

Flooks- Автор вопроса
Vladimir
Хорошо. А на каком этапе проблема возникает?

начинаю тупить примерно тут: f = fopen("f", "rb"); while (fread(&books, siz, 1, f) == 1) { if (books.god == asd[i]) //for (m = -1; m < all - 1; m++) if (asd[m] == books.god) poj[i + 2]++; i++; } fclose(f); в asd[] хранятся года как раз

Flooks
начинаю тупить примерно тут: f = fopen("f", "rb")...

poj - это что? Я не знаю как вы собираетесь хранить книги с максимальным количеством страниц. Если вам действительно нельзя использовать мапы и не хочется руками писать какое-то отображение год -> книга, то можете примерно так сделать - создаем динамических массив "максимальных" книг. Затем проходимся по вообще всем книгам. (Книгу в исходном массиве буду помечать А, в "максимальном" массиве - В) Для каждой книги А проверяем, есть ли в массиве максимальных книг книга В, у которой год равен году книги А. Если есть, то сравниваем количество страниц и заменяем, если нужно, книгу B на книгу А. Если книги B в массиве не нашлось, то добавляем туда книгу А.

Vladimir
poj - это что? Я не знаю как вы собираетесь хранит...

Завести массив лет, и за 1 проход заполнить его

Flooks- Автор вопроса
Vladimir
poj - это что? Я не знаю как вы собираетесь хранит...

poj это кусок старого кода, предназначался уже тут для хранения "максимальных" годов

Flooks- Автор вопроса
Vladimir
А как поможет?

А, это тоже самое меня сбила фраза "помечать А"))

Maus Grau
А, это тоже самое меня сбила фраза "помечать А"))

Там просто в противном случае получается что-то вроде "найдем книгу у которой год равен году книги"

Flooks
хорошо, спасибо, буду пробовать

в питоноподобном псевдокоде: all_books = [ /* представим, что тут какие-то данные есть */] max_books = [/* а этот пустой */] for book in all_books: bool found = False for max_book in max_books: if max_book.year == book.year: found = True if max_book.pages < book.pages: // нашли новую "максимальную" книгу max_book = book break if !found: max_books.add(book) // Просто добавим в массив это плохо по асимптотике, но самая "наивная" и быстрая реализация, кмк

Flooks- Автор вопроса
Vladimir
в питоноподобном псевдокоде: all_books = [ /* пре...

понял, буду ориентироваться на это

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта