Aleksandr_Grigoryev

21

Mar 29th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. struct adress
  5. {
  6.     char street[29];
  7.     int dom, nomK;
  8. };
  9. struct Izdan
  10. {
  11.     char surname[39];
  12.     double prise;
  13. };
  14. struct subscribers
  15. {
  16.     char surname[15];
  17.     adress adr;
  18. };
  19. struct podpiska
  20. {
  21.     char surnameP[15];
  22.     char nameP[39];
  23. };
  24.  
  25. struct A
  26. {
  27.     adress adrA;
  28.     char name[39];
  29. };
  30. void formBinSubscribers(ifstream &f, ofstream &g)
  31. {
  32.     subscribers a;
  33.     while (f.peek() != EOF)
  34.     {
  35.         f >> a.surname >> a.adr.street >> a.adr.dom >> a.adr.nomK;
  36.         g.write((char *)&a, sizeof subscribers);
  37.     }
  38. }
  39. void formBinPodpiska(ifstream &f, ofstream &g)
  40. {
  41.     podpiska b;
  42.     while (f.peek() != EOF)
  43.     {
  44.         f >> b.surnameP >> b.nameP;
  45.         g.write((char *)&b, sizeof podpiska);
  46.     }
  47. }
  48. void formBinIzdan(ifstream &f, ofstream &g)
  49. {
  50.     Izdan d;
  51.     while (f.peek() != EOF)
  52.     {
  53.         f >> d.surname >> d.prise;
  54.         g.write((char *)&d, sizeof Izdan);
  55.     }
  56. }
  57. void formNewBin(ifstream &f,  ifstream &f1, ifstream &f2, ofstream &g)
  58. {
  59.     Izdan d;
  60.     subscribers a;
  61.     podpiska b;
  62.     A c;
  63.     //f.read((char*)&a, sizeof(subscribers)); ПОДПИСЧИКИ
  64.     //f2.read((char *)&d, sizeof(Izdan)); ИЗДАНИЯ
  65.     //f1.read((char *)&b, sizeof(podpiska)); ПОДПИСКА
  66.     while (f.peek()!=EOF)
  67.     {
  68.         f.read((char *)&a, sizeof subscribers);
  69.         c.adrA = a.adr;
  70.         while (f1.peek() != EOF)
  71.         {
  72.             f1.read((char *)&b, sizeof podpiska);
  73.             if (strcmp(a.surname, b.surnameP) == 0)
  74.             {
  75.                 strcpy_s(c.name,b.nameP);
  76.                     g.write((char*)&c, sizeof(A));
  77.             }
  78.         }
  79.         f1.seekg(0);
  80.     }      
  81. }
  82. void showNewBin(ifstream &f)
  83. {
  84.     A a;
  85.     while (f.peek() != EOF)
  86.     {
  87.         f.read((char *)&a, sizeof A);
  88.         cout << a.adrA.street << ' ' << a.adrA.dom << ' ' << a.adrA.nomK << ' ' << a.name<<endl;
  89.     }
  90. }
  91. int main()
  92. {
  93.     setlocale(LC_ALL, "RUS");
  94.     ifstream in("Подписные_Издания.txt");
  95.     ofstream outBinIzdan("Text1.bin", ios::binary);
  96.     formBinIzdan(in, outBinIzdan);
  97.     in.close();
  98.     outBinIzdan.close();
  99.     ifstream in1("Подписчики.txt");
  100.     ofstream outBinSubscribers("Text2.bin", ios::binary);
  101.     formBinSubscribers(in1, outBinSubscribers);
  102.     in1.close();
  103.     outBinSubscribers.close();
  104.     ifstream in2("Подписка.txt");
  105.     ofstream outBinPodpiska("Text3.bin", ios::binary);
  106.     formBinPodpiska(in2, outBinPodpiska);
  107.     in2.close();
  108.     outBinPodpiska.close();
  109.     ifstream inBin("Text1.bin", ios::binary); //издания
  110.     ifstream inBin1("Text2.bin", ios::binary); //подписчики
  111.     ifstream inBin2("Text3.bin", ios::binary); //подписка
  112.     ofstream outBin("rezult.bin", ios::binary);
  113.     formNewBin(inBin1,inBin2,inBin,outBin);
  114.     inBin.close();
  115.     inBin1.close();
  116.     inBin2.close();
  117.     outBin.close();
  118.     ifstream outBinin("rezult.bin", ios::binary);
  119.     showNewBin(outBinin);
  120.     system("pause");
  121.     return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment