23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
1

Контейнерные классы, multimap

12.05.2020, 11:58. Показов 721. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Мне нужно было написать программу учета книг в библиотеке. Сведения о книгах содержат: фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
 добавление данных о книгах, вновь поступающих в библиотеку;
 удаление данных о списываемых книгах;
 выдача сведений о всех книгах, упорядоченных по фамилиям авторов;
 выдача сведений о всех книгах, упорядоченных по годам издания.
Хранение данных организовать с применением контейнерного класса multimap, в качестве ключа использовать "фамилию и инициалы автора".
Я сделал данный код в виде массива, но не понимаю, как переделать код под multimap, помгите, пожалуйста.
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
123
124
125
126
127
128
129
130
131
132
#include <Windows.h>
#include <string.h>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <io.h>
 
using namespace std;
 
template <class Type>
class Collection
{
private:
    int top;
    int size;
public:
 
    Type * Array;
    void ExpandArray()
    {
        size = size * 2;
        Type* temp = new Type[size];
 
        for (int i = 0; i <top; i++)
            temp[i] = Array[i];
 
        delete[] Array;
        Array = temp;
    }
    Collection()
    {
        size = 5;
        top = 0;
        Array = new Type[size];
    }
    void Push(Type  obj)
    {
        if (top >= size)
        {
            ExpandArray();
        }
        Array[top++] = obj;
    }
    void Pop()
    {
        return Array[--top];
    }
    int getTop()
    {
        return top;
    }
    ~Collection()
    {
        delete[] Array;
    }
};
class Book
{
public:
    char* author;
    char* name;
    int year;
    int number; 
    Book() { ; }
    Book(char* _Author, char* _name, int _year, int _number)
        {
            author = _Author;
            name = _name;
            year = _year;
            number = _number;
        }
    int Sort(Collection <Book> Spisok)
    {
        int temp = 0;
        int stlen = Spisok.getTop() - 1;
        for (int j = 0; j < stlen; j++)
        {
            for (int i = 0; i < stlen; i++)
            {
                if (Spisok.Array[i].year < Spisok.Array[i + 1].year)
                    {
                         temp = Spisok.Array[i].year;
                         Spisok.Array[i].year = Spisok.Array[i + 1].year;
                         Spisok.Array[i + 1].year = temp;
                    }
            }
        }
        return 1;
    }
};
 
int main()
{
    setlocale(LC_ALL, "RUS");
    Collection <Book> spisok;
    char* Author;
    char* Name;
    char * buf = new char[100];
    int len, Number, Year;
    len = Year = Number = 0;
    cin.ignore();
    Book mainBook;
    for (int i = 0; i < 3; i++)
    {
        printf("%sВведите ФИО Автора -> \n", "\n");
        cin.getline(buf, 100);
        len = strlen(buf);
        Author = new char[len + 1];
        strcpy_s(Author, strlen(Author), buf);
        
        printf("%sНазвание книги -> \n", "\n");
        cin.getline(buf, 100);
        len = strlen(buf);
        Name = new char[len + 1];
        strcpy_s(Name, strlen(Name), buf);
 
        printf("%sГод издания -> \n", "\n");
        cin.getline(buf, 100);
        Year = atoi(buf);
        printf("%sКоличество экземпляров -> \n", "\n");
        cin.getline(buf, 100);
        Number = atoi(buf);
        Book Tmp(Author, Name, Year, Number);
        spisok.Push(Tmp);
    }
    mainBook.Sort(spisok);
    printf("%s - Автор\n", spisok.Array[0].year);
    printf("%s - Автор\n", spisok.Array[1].year);
    printf("%s - Автор\n", spisok.Array[2].year);
 
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2020, 11:58
Ответы с готовыми решениями:

Контейнерные классы C++.
Здраствуйте:)Поскажите пожалуйста по нижеприведенному коду, сама не могу разобраться, хотя смотрела...

Контейнерные классы
Собственно что это?:) Если можно, скиньте ссылку, где есть примеры на visual C++ на русском. Спасибо

контейнерные классы
выводит ошибку, как исправить 1&gt;22.cpp(41): error C4430: отсутствует спецификатор типа -...

Контейнерные классы
Есть некоторое сомнения, помоготи пожалуйста: Если у меня есть например такой код: ...

1
0 / 0 / 0
Регистрация: 17.11.2019
Сообщений: 41
20.12.2020, 21:40 2
Здравствуйте, у Вас получилось решить данную задачу?
0
20.12.2020, 21:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2020, 21:40
Помогаю со студенческими работами здесь

Контейнерные классы
Добрый вечер! Получил задание на редактирование параграфов из файла. Решил делать через контейнер...

Контейнерные классы
1. Опишите класс «Штучка», описывающий какую либо материальную вещь. Данные класса: Название,...

Контейнерные классы
Помогите пожалуйста, очень срочно!!!!Необходимо исправить программу! Работает не коректно.. ...

Последовательные контейнерные классы
Составить программу, используя последовательные классы стандартной библиотеки шаблонов С++, которая...

Контейнерные классы: стек и очередь
Создать класс“Сотрудник”, состоящей из класса ”Зарплата”. Класс “Сотрудник ”: фамилия сотрудника,...

Библиотека потокового ввода-вывода и контейнерные классы.Дешифровка
Задание:Создать функцию, которая расшифровывает зашифрованный файл на основании файла- ключа....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru