0 / 0 / 0
Регистрация: 29.09.2021
Сообщений: 37
1

Поиск книг по году издания

16.11.2021, 12:55. Показов 1088. Ответов 5
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите в чем проблема
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 <iostream>
//#include <ctime>
#include <iomanip>
#include <fstream>
#include <string>
//#include <vector>
 
using namespace std;
 
 
struct Books
{ 
    string autor;
    string name;
    string place;
    unsigned int year;
 
};
//------------------------------------------------------------------------------------
void inBooks(Books* arrBooks,int size)//-ввод с клавиатуры данных в массив, 
                             //состоящий из 10 элементов типа BOOKS, и занесение их в файл данных
{
    ofstream fin("books.txt");
    if (!fin)
    {
        cout << "Файл не может быть открыт или создан\n";
        exit(1);
    }
    for (int i = 0; i < size; ++i)
    {
        cout << setw(35) << "Введите данные о книге № " << i + 1 << endl;
        cout << "Введите автора книги" << endl;
        getline(cin, arrBooks[i].autor);
        fin <<"Автор - "<< arrBooks[i].autor << ", ";
        cout << "Введите название книги" << endl;
        getline(cin, arrBooks[i].name);
        fin <<"Название книги - "<< arrBooks[i].name << ", ";
        cout << "Введите место издания книги" << endl;
        getline(cin, arrBooks[i].place);
        fin <<"Место издания - "<< arrBooks[i].place << ", ";
        cout << "Введите год издания книги" << endl;
        cin >> arrBooks[i].year;
        fin <<"Год издания - "<< arrBooks[i].year <<endl;
        cin.ignore(32767, '\n');
        cout << endl;
    }
}
 
//--------------------------------------------------------------------------------
void outBooks()  //Вывод данных из файла
{
    cout << "Вывод данных из файла" << endl;
    string outBook;
    ifstream fin("books.txt");
    if (!fin)
    {
        cout << "Файл не может быть открыт или создан\n";
        exit(1);
    }
    while (fin)
    {
        getline(fin, outBook);
        cout << outBook << endl;
    }
}
 
 
//---------------------------------------------------------------------------------
void print(Books* arrBooks, int id)
{
    cout << "Автор - " << arrBooks[id].autor << ", ";
    cout << "Название - " << arrBooks[id].name << ", ";
    cout << "Место издания - " << arrBooks[id].place << ", ";
    cout << "Год издания - " << arrBooks[id].year << endl;
}
 
 
//------------------------------------------------------- Поиск книги по году
int search(Books* arrBooks, int size)
{
    string searchBooks;
    int a=0;
    cout << "Введите год издания: " << endl;
    cin.ignore(32767, '\n');
    getline(cin, searchBooks);
    for (int i = 0; i < size; ++i)
    {
        if (arrBooks[i].year == searchBooks)
        {
            print(arrBooks, i);
            a = 1;
        }
    }
    return a;
}
//------------------------------------------------------------------------------------
int main()
 
{
    setlocale(LC_ALL, "ru");
 
    const int size = 2;//Колличество элементов массива
    cout <<setw(40)<< "Заполните массив: " << endl;
    Books arrBooks[size];
    inBooks(arrBooks, size);
 
    cout <<
        "1. - чтение данных из файла и вывод их на экран" << endl <<
        "2. - вывод на экран книг, изданных в годе, который введен с клавиатуры(если таких нет - вывести сообщение об этом)" << endl <<
        "0. - выход" << endl;
    int menu=0;
    while (true)
    {
        cin >> menu;
        switch (menu)
        {
        case 1:outBooks();
            break;
        case 2: 
        {
            int a = 0;
            a = search(arrBooks, size);
            if (a != 1)cout << "Книг изданных в этом годе нет. " << endl;
            break;
        }
        
            break;
        case 0:return 0;
        }
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2021, 12:55
Ответы с готовыми решениями:

Структуры. Поиск книги по году издания.
Написать программу поиска книги по году издания в массиве структур))))Заранее спасибо)

Дан файл , содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. а) Найти названия книг данного автор
Здравствуйте,я тот несчастный студент,который учился в школе где не было программирования.Поэтому...

Отсортировать стуктуры по автору а внутри каждого автора- по году издания
надо отсортировать по автору а внутри каждого автора- по году издания. у меня почему-то иероглифы...

Cтруктуры, выдача информации о книге по фамилии автора или году издания
Здравствуйте помогите пожалуйста с программой. Не могу понять как делать. Задание: Объявить...

5
Заблокирован
16.11.2021, 13:07 2
тут нет экстрасенсов
1
14 / 10 / 4
Регистрация: 12.12.2020
Сообщений: 122
16.11.2021, 14:22 3
В целом я сразу понял, как тебе помочь, без скрина работы программы, без описания ошибки, так просто еще никогда не догадывался, в чем ошибка
0
0 / 0 / 0
Регистрация: 29.09.2021
Сообщений: 37
16.11.2021, 14:26  [ТС] 4
так в чем ошибка ?
0
Заблокирован
16.11.2021, 14:34 5
Цитата Сообщение от arturr6543 Посмотреть сообщение
так в чем ошибка ?
ну прям как в анекдоте
Поиск книг по году издания
0
фрилансер
5497 / 5093 / 1047
Регистрация: 11.10.2019
Сообщений: 13,333
16.11.2021, 14:39 6
Лучший ответ Сообщение было отмечено zss как решение

Решение

arturr6543, я не экстрасекс, но знаю про существование компиляторов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Поиск книги по году
bool search(Books* arrBooks, int size)
{
    cout << "Введите год издания: " << endl;
    cin.ignore(32767, '\n');
    
    unsigned int year{}; std::cin>>year;
    for (int i = 0; i < size; ++i)
    {
        if (arrBooks[i].year == year)
        {
            print(arrBooks, i);
            return true;
        }
    }
    
    return false;
}
0
16.11.2021, 14:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2021, 14:39
Помогаю со студенческими работами здесь

Написать программу поиска числа книг с заданным годом издания
Написать программу поиска числа книг с заданным годом издания на c++ с помощью структур.

Организовать выбор книг, изданных за последние 2 года, выдать их на экран, упорядочив по датам издания.
Задача: Книжный архив. Составить программу формирования данных о книгах: автор, название, год...

Найти названия книг заданного автора и вывести их на экран в порядке убывания года издания
Дан массив записей, содержащий сведения о книгах: фамилия автора, название книги, год издания...

Дан каталог книг. Реализовать показ всех книг на экран и поиск по каждому из полей
Задание: Дан каталог книг. Про книгу известно: уникальный номер, автор, название, год издания....

Получить все возможные варианты комплектов из 60 книг, если посылки комплектуются по 10, 15 и 20 книг (поиск ошибки)
#include&lt;iostream&gt; using namespace std; int main() { int i=0, j=0, k=0, m=0; do { do...

Структуры подсчитать кол-во книг в заданном году
Занимаюсь со структурами, сделал всё, что нужно в условии, но выдаёт ошибку нужно поставить скобку,...

Структура: Для заданного автора вывести на экран его самую раннюю книгу и самую последнюю - по году издания.
Дан массив записей, содержащий сведения о книгах: фамилия автора, название книги, год издания...


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

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

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