S
S
serhey7972020-11-19 18:01:44
C++ / C#
serhey797, 2020-11-19 18:01:44

How to make a filter?

You need to make a filter that filters by genre, number, month, year of publication, publisher. Help me do it.

#include <iostream>
#include <fstream>
#include <math.h>
#include <string>

using namespace std;

struct BookCathalog {
  string author;
  string name;
  string date;
  string publishing;
  string size;
  string genre;

};

int globalSize = 0;
int CinNewCathalog(struct BookCathalog* cath) {
  int BookSize;
  cout << "Количество новых позиций > ";
  cin >> BookSize;
  for (int i = 0; i < BookSize; i++) {

    cout << "Автор: ";
    cin >> cath[i].author;
    cout << "Название: ";
    cin >> cath[i].name;
    cout << "Дата: ";
    cin >> cath[i].date;
    cout << "Издательство: ";
    cin >> cath[i].publishing;
    cout << "Жанр: ";
    cin >> cath[i].genre;
    cout << "Кол-во стр:";
    cin >> cath[i].size;

    cout << " ---" << endl;
  }
  ::globalSize = BookSize;
  return BookSize;
}

void FillCathalog(BookCathalog* cath) {
  cath[0].author = "Richard Lymon";
  cath[0].name = "Moon - park";
  cath[0].date = "1989 year";
  cath[0].publishing = "Funland";
  cath[0].genre = "horrors";
  cath[0].size = "638 country";

  cath[1].author = "Bram Stoker";
  cath[1].name = "Dracula";
  cath[1].date = "1897 year";
  cath[1].publishing = "Archibald Constable and Company";
  cath[1].genre = "horrors";
  cath[1].size = "448 country";

  cath[2].author = "Roger Zelazny";
  cath[2].name = "Prince of Light";
  cath[2].date = "1967 year";
  cath[2].publishing = "Doubleday";
  cath[2].genre = "fantastic";
  cath[2].size = "530 country";

  cath[3].author = "H.G. Wells";
  cath[3].name = "War of the Worlds";
  cath[3].date = "1987 year";
  cath[3].publishing = "Heinemann";
  cath[3].genre = "fantastic";
  cath[3].size = "480 country";

  cath[4].author = "Victor Astafiev";
  cath[4].name = "Cursed and killed";
  cath[4].date = "1992 year";
  cath[4].publishing = "UK";
  cath[4].genre = "military";
  cath[4].size = "541 country";


  ::globalSize = 4;
  cout << "GlobalSize = " << ::globalSize << endl;
}

void CoutCathalog(struct BookCathalog* cath, int genre) {
  for (int i = 0; i < genre; i++) {
    cout << "-" << endl;
    cout << "Автор: " << cath[i].author << endl;
    cout << "Название: " << cath[i].name << endl;
    cout << "Дата: " << cath[i].date << endl;
    cout << "Издательство: " << cath[i].publishing << endl;
    cout << "Жанр: " << cath[i].genre << endl;
    cout << "Кол-во стр: " << cath[i].size << endl;
  }
}

void SearchInCathalog(struct BookCathalog* cath, int genre) {
  setlocale(LC_ALL, "Russian");
  bool found = false;
  string genreF;
  string author;

  cout << "Жанр:\n ";
  cin >> genreF;
  cout << "Автор:\n ";
  cin >> author;

  for (int i = 0; i < genre; i++) {

    if (genreF == cath[i].genre && author == cath[i].author) {
      cout << "Автор: " << cath[i].author << endl;
      cout << "Название: " << cath[i].name << endl;
      cout << "Дата: " << cath[i].date << endl;
      cout << "Издательство: " << cath[i].publishing << endl;
      cout << "Жанр: " << cath[i].genre << endl;
      cout << "Кол-во стр: " << cath[i].size << endl;
      found = true;
    }
  }
  if (!found) {
    cout << "\n Ничего не найдено :/" << endl;
  }
}

int main() {
  setlocale(LC_ALL, "Russian");
  int cathSize;
  int v, v2;
  cout << "1.Создать новый\n2.Заполнить по стандарту\n";
  cin >> v;
  cout << "\n" << endl;

  BookCathalog* buildingSuppliesList = new BookCathalog[10];
  switch (v) {
  case 1:
    cathSize = CinNewCathalog(buildingSuppliesList);
    CoutCathalog(buildingSuppliesList, cathSize);
    break;
  case 2:
    FillCathalog(buildingSuppliesList);
    CoutCathalog(buildingSuppliesList, 5);
    break;
  default:
    break;
  }

  cout << "\n\n1.Поиск\n2.Выход\n";
  cin >> v2;

  switch (v2) {
  case 1:
    SearchInCathalog(buildingSuppliesList, ::globalSize);
    break;
  default:
    break;
  }

}

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question