Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 09.11.2019, 15:15   #1
VLADOSW2001
Пользователь
 
Регистрация: 16.09.2019
Сообщений: 28
По умолчанию С++ Си В текстовом файле хранится список книг в библиотеке: название, автор, количество имеющихся экземпляров, издательство, жанр, год издания

В текстовом файле хранится список книг в библиотеке: название, автор, количество имеющихся экземпляров, издательство, жанр, год издания. Во втором файле сохраняется информация о выдаче книг: дата выдачи, дата возвращения, название книги, автор, фамилия и имя читателя. Путь к файлам задается пользователем с клавиатуры.
Программа состоит из нескольких файлов. В первом должно быть реализовано работу главной функции и вызов всех других функций. Во втором файле должны содержаться функции, которые обеспечивают выполнение следующих действий:
-определение популярности каждого литературного жанра и вывода данных, отсортированных по популярности;
-выведение информации о книгах, которые читатели активно заказывали в течение заданного периода времени;
- определение читателей, не возвращали книги вовремя, и для каждого читателя количество случаев, по которым отсортировать данные, и вывести их в другой файл;
- вывод информации о каждом авторе, книги которого имеются в библиотеке, вместе с количеством имеющихся экземпляров книг каждого автора и количеством заказов его книг. Данные отсортировать в алфавитном порядке по фамилии автора.
Работу с программой реализовать с помощью меню. Заполнение файла новыми данными реализовывать также с помощью меню.
source.cpp
Код:
#include<iostream>
 
#include<string>
 
#include "func.h"
 
using namespace std;
 
int main(int argv, char* argc[])
{
    setlocale(NULL, "rus");
 
    int s_num; string path_a, path_b;
 
 
    cout << "Введите путь к файлу (a):  ";  getline(cin, path_a);
 
    cout << "Введите путь к файлу (b):  ";  getline(cin, path_b);
 
    do
    {
        work_with_file(path_b, path_a);
 
        cout << "1)Сортировка по популярности жанров; 2)Сортировка по популярности книги; 3)Информация о читателей;4)Информация о авторах; 5)Дописать в файл; 6)Выход" << endl;
 
        cin >> s_num;
 
        switch (s_num)
        {
        case 1:
            popular_genre(path_b);
            break;
        case 2:
            popular_book(path_b, path_a);
            break;
        case 3:
            bad_reader(path_b, path_a);
            break;
        case 4:
            popular_writer(path_b, path_a);
            break;
        case 5:
            add_new_data_to_file(path_b, path_a);
            break;
        default:
            cout << "введено некоректне значення" << endl;
            break;
        }
    } while (s_num != 6);
    
system("pause");
 
return EXIT_SUCCESS;
}
func.cpp
Код:

#include "func.h"
 
struct Library
{
    string the_title_of_the_book1;
 
    string writer1;
 
    string biography;
 
    string amount;
 
    string publisher;
 
    string year;
 
 
    friend
        istream& operator >> (istream& is, Library& info)
    {
        is >> info.the_title_of_the_book1;
 
        is >> info.writer1;
 
        is >> info.biography;
 
        is >> info.amount;
 
        is >> info.publisher;
 
        is >> info.year;
 
        return is;
    }
};
struct Library_Out
{
    string date_from;
 
    string date_to;
 
    string the_title_of_the_book;
 
    string writer;
         
    string genre;
 
    string FIO;
 
    friend
 
        istream& operator >> (istream& out, Library_Out& info)
    {
        out >> info.date_from;
 
        out >> info.date_to;
 
        out >> info.the_title_of_the_book;
 
        out >> info.writer;
 
        out >> info.genre;
 
        out >> info.FIO;
 
        return out;
    }
};
 
vector<Library> dat; vector<Library_Out> Lib_Out;
 
void work_with_file(string path_b, string path_a)
{
    
    Library inf;
 
    ifstream fin(path_a);
 
    while (fin >> inf)  dat.push_back(inf);
    
    
 
    Library_Out inf_Out;
 
    ifstream fin2(path_b);
 
    while (fin2 >> inf_Out)  Lib_Out.push_back(inf_Out);
 
    fin.close();
 
    fin2.close();
}
 
void add_new_data_to_file(string path_b, string path_a)
{
    fstream file_a, file_b;
 
    string str;
 
    int n;
 
    cout << "Сколько нужно дописать книг: ";  cin >> n;
 
    file_a.open(path_a, ios::in | ios::out | ios::app);
 
    for (int i = 0; i < n; i++)
    {
        file_a << endl;
        cout << "Название книги: "; cin >> str;
        file_a << str << " ";
 
        cout << "Автор: "; cin >> str;
        file_a << str << " ";
 
        cout << "Введите биографию (Wikipedia): "; cin >> str;
        file_a << str << " ";
 
        cout << "Количество: "; cin >> str;
        file_a << str << " ";
 
        cout << "Издательство: "; cin >> str;
        file_a << str << " ";
 
        cout << "Жанр: "; cin >> str;
        file_a << str << " ";
 
        cout << "Год издательства: "; cin >> str;
        file_a << str << " ";
 
        file_a << endl;
    }
    file_a.close();
}
 
void popular_genre(string path_b)
{
    vector<string>vec;
 
for(auto i:Lib_Out)
       vec.push_back(i.genre);
 
 
map<string, size_t> counter;
 
for (const auto& item : vec)
      counter[item]++;
 
vector<pair<size_t, string>> sorting;
 
for (auto it = counter.begin(); it != counter.end(); it++)
    sorting.push_back({ it->second,it->first });
 
 
sort(sorting.rbegin(), sorting.rend(), [](const auto& l, const auto& r)
    {
        return l.first < r.first;
    });
 
vector<string> vec_result;
 
vec_result.reserve(vec.size());
 
for (const auto& item : sorting)
{
    vec_result.insert(vec_result.end(), item.first, item.second);
}
 
for (int i = 0; i < vec_result.size(); i++)
    for (int j = 0; j < vec_result.size(); j++)
        if (vec_result[i] == vec_result[j])
            vec_result.erase(vec_result.begin() + j);
 
for (const auto& i : vec_result)
    cout << i << endl;
 
}
 
void popular_book(string path_b, string path_a)
{
    vector<string>vec;
 
    for (auto i : Lib_Out)
 
        vec.push_back(i.the_title_of_the_book);
 
 
    map<string, size_t> counter;
 
    for (const auto& item : vec)
 
        counter[item]++;
 
    vector<pair<size_t, string>> sorting;
 
    for (auto it = counter.begin(); it != counter.end(); it++)
 
        sorting.push_back({ it->second,it->first });
 
 
    sort(sorting.rbegin(), sorting.rend(), [](const auto& l, const auto& r)
        {
            return l.first < r.first;
        });
 
    vector<string> vec_result;
 
    vec_result.reserve(vec.size());
 
    for (const auto& item : sorting)
    {
        vec_result.insert(vec_result.end(), item.first, item.second);
    }
    for (int i = 0; i < vec_result.size(); i++)
        for (int j = 0; j < vec_result.size(); j++)
            if (vec_result[i] == vec_result[j])
                vec_result.erase(vec_result.begin() + j);
 
    for (const auto& i : vec_result)
        cout << i << endl;
 
}
 
void bad_reader(string path_b, string path_a)
{
    fstream file; file.open(path_b, ios::out | ios::in|ios::app);
 
    for (auto& i : Lib_Out)
 
        if (i.date_to == "00.00.0000")
 
            file << "Должники: " << i.FIO << endl;
 
}
 
void popular_writer(string path_b, string path_a)
{
    for (auto &i:dat ) {
        cout << i.writer1 << endl; cout << i.biography << endl; cout << i.amount << endl;
        continue;
    }
VLADOSW2001 вне форума   Ответить с цитированием
Старый 09.11.2019, 15:15   #2
VLADOSW2001
Пользователь
 
Регистрация: 16.09.2019
Сообщений: 28
По умолчанию

делаю уже 2 недели не работает
VLADOSW2001 вне форума   Ответить с цитированием
Старый 11.11.2019, 01:36   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,651
По умолчанию

А что не работает?
Какая ошибка, ну или что-то другое?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ запись о книге содержит поля: автор, название, год издания, издательство, цена. реализовать класс Subscriber Svetlana2104 Помощь студентам 1 08.05.2017 20:53
[Pascal] В частной библиотеке хранится информация о литературе: название книги, автор, цена, вид переплета. Найти:... destra1j Помощь студентам 7 05.05.2016 13:30
В текстовом файле хранится программа, записанная на языке Turbo Pascal. Вычислить и дописать в конец этого файла количество операт Grenki Паскаль, Turbo Pascal, PascalABC.NET 5 13.04.2014 12:00
Структура: Составьте программу, выдающую список книг определенного автора, хранящихся в библиотеке stas45rus Помощь студентам 2 04.05.2012 16:59
Даны сведения о книгах в библиотеке: фамилия автора, название книги и год издания. Напечатать автора и название книг, го greshnik92 Общие вопросы C/C++ 3 21.06.2011 10:45


04:36.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.