Advertisement
Guest User

Untitled

a guest
Aug 26th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.25 KB | None | 0 0
  1. // ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
  2. //
  3. #pragma once
  4.  
  5. #include "stdafx.h"
  6. #include <windows.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <fstream>
  10. #include <sys/types.h>
  11. #include <winsock.h>
  12. #include <iostream>
  13. #include <vector>
  14. using namespace std;
  15.  
  16. struct Record
  17. {
  18.     char journal[64];
  19.     int year, number;
  20.     char author[32];
  21.     char article[128];
  22. };
  23.  
  24. bool records_equal(Record r1, Record r2)
  25. {
  26.     if (!(strcmp(r1.journal, r2.journal)) && r1.year == r2.year && !(strcmp(r1.author, r2.author)) && !(strcmp(r1.article, r2.article)) && r1.number == r2.number)
  27.         return true;
  28.     return false;
  29. }
  30.  
  31. class Base
  32. {
  33.     vector<Record> base;
  34.     int count;
  35. public:
  36.     Base()
  37.     {
  38.         ifstream fin;
  39.         fin.open("base.txt");
  40.         fin >> count;
  41.         for (int i = 0; i < count; i++)
  42.         {
  43.             Record rec;
  44.             fin >> rec.journal;
  45.             fin >> rec.year;
  46.             fin >> rec.number;
  47.             fin >> rec.author;
  48.             fin >> rec.article;
  49.             base.push_back(rec);
  50.         }
  51.         fin.close();
  52.     }
  53.     void add_record(Record rec)
  54.     {
  55.         base.push_back(rec);
  56.     }
  57.     void delete_record(Record rec)
  58.     {
  59.         auto it = base.begin();
  60.         while (!records_equal(*it, rec))
  61.         {
  62.             it++;
  63.         }
  64.         base.erase(it);
  65.     }
  66.  
  67.    
  68.  
  69.     vector<Record> search_articles(char* str = "", int year1 = -1, int year2 = -1, int number1 = -1, int number2 = -1)
  70.     {
  71.         vector<Record> articles;
  72.         int c = 0;
  73.         for (int i = 0; i < count; i++)
  74.         {
  75.             if ((!strcmp(str, base[i].journal) || str == "") && ((base[i].year > year1 && base[i].year < year2) || year2 == -1) && ((base[i].number > number1 && base[i].number < number2) || number2 == -1))
  76.             {
  77.                 articles.push_back(base[i]);
  78.             }
  79.         }
  80.         return articles;
  81.     }
  82.     void save_base(char* name)
  83.     {
  84.         ofstream fout;
  85.         fout.open(name);
  86.         fout << count << endl;
  87.         for (int i = 0; i < count; i++)
  88.         {
  89.             fout << base[i].journal << ' ' << base[i].year << ' ' << base[i].number << ' ' << base[i].author << ' ' << base[i].article << endl;
  90.         }
  91.         fout.close();
  92.     }
  93.     /*int code(int c)
  94.     {
  95.         switch (c)
  96.         {
  97.             case 1:
  98.                
  99.         }
  100.     }*/
  101. };
  102.  
  103. char* generate_journal()
  104. {
  105.     int count = rand() % 63 + 1;
  106.     char* name = new char[count + 1];
  107.     name[0] = 'A' + rand() % 26;
  108.     for (int i = 1; i < count; i++)
  109.     {
  110.         name[i] = 'a' + rand() % 26;
  111.     }
  112.     name[count] = '\0';
  113.     return name;
  114. }
  115.  
  116. char* generate_author()
  117. {
  118.     int count = rand() % 31 + 1;
  119.     char* name = new char[count + 1];
  120.     name[0] = 'A' + rand() % 26;
  121.     for (int i = 1; i < count; i++)
  122.     {
  123.         name[i] = 'a' + rand() % 26;
  124.     }
  125.     name[count] = '\0';
  126.     return name;
  127. }
  128.  
  129. char* generate_article()
  130. {
  131.     int count = rand() % 78 + 50;
  132.     char* name = new char[count + 1];
  133.     name[0] = 'A' + rand() % 26;
  134.     for (int i = 1; i < count; i++)
  135.     {
  136.         name[i] = 'a' + rand() % 26;
  137.     }
  138.     name[count] = '\0';
  139.     return name;
  140. }
  141.  
  142. void generate_base(char* name)
  143. {
  144.     ofstream fout;
  145.     fout.open(name);
  146.     int count = rand() + 10000;
  147.     fout << count << endl;
  148.     for (int i = 0; i < count; i++)
  149.     {
  150.         fout << generate_journal() << ' ';
  151.         fout << rand() % 66 + 1950 << ' ';
  152.         fout << rand() % 100 << ' ';
  153.         fout << generate_author() << ' ';
  154.         fout << generate_article() << endl;
  155.     }
  156.     fout.close();
  157. }
  158.  
  159. int main()
  160. {
  161.     Base data_base;
  162.     int socket_number = socket(AF_INET, SOCK_STREAM, 0);
  163.     return 0;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement