Форум программистов, компьютерный форум CyberForum.ru

Составить программу формирования данных о книгах: автор, название, год издания, цена - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевернуть строку, в чем ошибка? http://www.cyberforum.ru/cpp-beginners/thread1798304.html
Выполните переворот строки, написав её наоборот. #include <iostream> #include <string> using namespace std; int main() { char str; char str1;
C++ Найти в тексте количество вхождений определенного слова Ребята, приветствую! Мне необходимо загрузить из файла текст (перемешанный, т.е. и буквы, и цифры, и знаки препинания, и табуляции есть). После нужно найти в нем число вхождений определенного слова. Я сделал так: string fileName = arguments.at(2); string word = arguments.at(6); string content; char temp; fstream file; file.open(fileName, ios::in | ios::binary | ios::_Nocreate); http://www.cyberforum.ru/cpp-beginners/thread1798287.html
C++ Организация управления типами данных
Поясните, пожалуйста, как происходит разделение типов данных в памяти? как компилятор определяет в каких ячейках хранятся соответствующие данные? Допустим, есть объявление (где int = 4 байта, short = 2 байта и char = 1) short int girls = 13; char name = "Alice"; int boys;В памяти выделяется участок (адрес: значение ) 0000: 0000 1101 (младший байт) 0001: 0000 0000 (старший) 0002: 0100...
Как подключить OpenGL на Dev-C++ C++
#include <iostream> #include <time.h> #include <GL/glut.h>// //2. ÑÎçäà¸ì ôóíêöèþ display void display() { glClear(GL_COLOR_BUFFER_BIT);// glColor3f(0.0,1.0,0.0); //
C++ Как создать функцию ввода элементов массива используя шаблоны? http://www.cyberforum.ru/cpp-beginners/thread1798223.html
Извините, по глупому вопросу, но на данный момент я не смог сообразить сам. Как создать функцию ввода элементов массива с помощью шаблонов? Вернуть этот массив. К примеру, я хочу вывести после ввода элементы массивов разных типов: целых, вещественных, символьных, С- строк Добавлено через 11 минут извините, сам справился Type* get(Type(*array), int size) {
C++ Последовательность сравнения выражения Здравствуйте. Простой код. Скажите, в какой последовательности будет сравниваться выражение i!=j<k) Я ввожу 12,12,12 и оно мне Гуд лак:) #include <iostream> #include <Windows.h> #include <stdlib.h> using namespace std; int main() подробнее

Показать сообщение отдельно
nd2
1063 / 802 / 270
Регистрация: 29.01.2016
Сообщений: 2,505
26.08.2016, 18:42     Составить программу формирования данных о книгах: автор, название, год издания, цена
Кликните здесь для просмотра всего текста
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
#include <iostream>
#include <cstdlib>
using namespace std;
 
class Book 
{
    char author[30];
    char title[30];
    int year;
    int price;
    public:
        void SetBook();
        int GetYear() const;
        int GetPrice() const
        {
            return price;
        }
        void ShowBook() const;
};
 
class Catalog
{
    Book *list;
    int size;
    public:
        Catalog(): list(0), size(0) {}
        ~Catalog();
        void FillCatalog(int n);
        int GetSize() const; //если понадобится размер каталога книг
        const Book* GetList() const
        { return list; }
        void ShowCatalog() const;
        void FindYear(unsigned int year, char f) const;
        void SortingCatalog(char* f);
};
 
int menu();
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Книжный архив" << endl << "Автор: студент гр. РИ-150005 Рогожников Роман Сергеевич" << endl << "Екатеринбург, 2016 г." << endl;
    system ("pause");
    int c, n;
    
    Catalog catalog;
    
    while (true)
    {
       system("cls"); 
       c = menu();
        
       switch (c)
       {
            case 1:
                
                if (catalog.GetList())
                    delete [] catalog.GetList();
                cout << "Введите количество книг в каталоге: ";
                (cin >> n).get();
                catalog.FillCatalog(n);
                system("cls");
                catalog.ShowCatalog();
                system("pause");
                break;
            case 2:
                
                if (catalog.GetSize() > 0)
                {
                    catalog.SortingCatalog("year");
                    catalog.ShowCatalog();
                    system("pause");
                }
                break;
            case 3:
                
                if (catalog.GetSize() > 0)
                {
                    catalog.SortingCatalog("price");
                    catalog.ShowCatalog();
                    system("pause");
                }
                break;
            case 4:
                
                if (catalog.GetSize() > 0)
                {
                    catalog.SortingCatalog("year");
                    cout << "Введите год издания: ";
                    int year;
                    (cin >> year).get();
                
                    cout << "Найти книги именно этого года (введите 'o')" << endl;
                    cout << "Найти книги старше этого года (введите 'b')" << endl;
                    cout << "Найти книги младше этого года (введите 's')" << endl;
                    char f;
                    (cin >> f).get();
 
                    catalog.FindYear(year, f);
                    system("pause");
                }
                break;
            
           default:
                return 0;
        }
    }
}
 
void Book::SetBook()
{
    cout << "Введите имя автора: ";
    cin.getline(author, sizeof(author));
    cout << "Введите название книги: ";
    cin.getline(title, sizeof(title));
    cout << "Введите год публикации: ";
    cin >> year;
    cout << "Введите цену книги: ";
    (cin >> price).get();
}
 
int Book::GetYear() const
{
    return year;
}
 
void Book::ShowBook() const
{
    cout << "Автор: " << author << endl;
    cout << "Заголовок: " << title << endl;
    cout << "Год публикации: " << year << endl;
    cout << "Цена: " << price << endl;
}
 
Catalog::~Catalog()
{
    delete[] list;
}
 
void Catalog::FillCatalog(int s)
{
    if (s <= 0) return;
    size = s;
    list = new Book[size];
    for (int i = 0; i < size; ++i)
    {
        cout << "Введите данные о " << i+1 << " книге:" << endl;
        list[i].SetBook();
        cout << endl;
    }
}
 
int Catalog::GetSize() const
{
    return size;
}
 
void Catalog::SortingCatalog(char* f)
{
    if (size == 0) 
        return;
    
    Book temp;
    for(int i = 0; i < size - 1; ++i)
    {
        for(int j = 0; j < size - 1; ++j)
        {
            bool flag = false;
            if (!strcmp(f, "year"))
            {
                flag = (list[j].GetYear() > list[j + 1].GetYear());
            }
            else if (!strcmp(f, "price"))
            {
                flag = (list[j].GetPrice() > list[j + 1].GetPrice());
            }
            if (flag)
            {
                temp = list[j + 1];
                list[j + 1] = list[j];
                list[j] = temp;
            }
        }
    }
}
 
void Catalog::ShowCatalog() const
{
    for (int i = 0; i < size; ++i)
    {
        cout << "Вывод данных о " << i+1 << " книге:" << endl;
        list[i].ShowBook();
        cout << endl;
    }
}
 
void Catalog::FindYear(unsigned int year, char f) const
{
    for (int i = 0; i < size; ++i)
    {
        bool flag = false;
        switch (f)
        {
        case 'o':
            if (list[i].GetYear() == year)
              flag = true;
            break;
        case 'b':
            if (list[i].GetYear() > year)
                flag = true;
            break;
        case 's':
            if (list[i].GetYear() < year)
                flag = true;
            break;
        }
        if (flag)
        {
            cout << "Вывод данных о " << i+1 << " книге:" << endl;
            list[i].ShowBook();
            cout << endl;
        }
    }
}
 
int menu()
{
    int choice;
    cout << "1 - Создать каталог" << endl;
    cout << "2 - Показать книги, упорядочив их по датам создания" << endl;
    cout << "3 - Показать книги, упорядочив их по цене" << endl;
    cout << "4 - Показать книги определённого года" << endl;
    cout << "5 - Выход" << endl;
    cout << "Ваш выбор: ";
    (cin >> choice).get();
    return choice;
}
 
Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru