Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct adress
- {
- char street[29];
- int dom, nomK;
- };
- struct Izdan
- {
- char surname[39];
- double prise;
- };
- struct subscribers
- {
- char surname[15];
- adress adr;
- };
- struct podpiska
- {
- char surnameP[15];
- char nameP[39];
- };
- struct A
- {
- adress adrA;
- char name[39];
- };
- void formBinSubscribers(ifstream &f, ofstream &g)
- {
- subscribers a;
- while (f.peek() != EOF)
- {
- f >> a.surname >> a.adr.street >> a.adr.dom >> a.adr.nomK;
- g.write((char *)&a, sizeof subscribers);
- }
- }
- void formBinPodpiska(ifstream &f, ofstream &g)
- {
- podpiska b;
- while (f.peek() != EOF)
- {
- f >> b.surnameP >> b.nameP;
- g.write((char *)&b, sizeof podpiska);
- }
- }
- void formBinIzdan(ifstream &f, ofstream &g)
- {
- Izdan d;
- while (f.peek() != EOF)
- {
- f >> d.surname >> d.prise;
- g.write((char *)&d, sizeof Izdan);
- }
- }
- void formNewBin(ifstream &f, ifstream &f1, ifstream &f2, ofstream &g)
- {
- Izdan d;
- subscribers a;
- podpiska b;
- A c;
- //f.read((char*)&a, sizeof(subscribers)); ПОДПИСЧИКИ
- //f2.read((char *)&d, sizeof(Izdan)); ИЗДАНИЯ
- //f1.read((char *)&b, sizeof(podpiska)); ПОДПИСКА
- while (f.peek()!=EOF)
- {
- f.read((char *)&a, sizeof subscribers);
- c.adrA = a.adr;
- while (f1.peek() != EOF)
- {
- f1.read((char *)&b, sizeof podpiska);
- if (strcmp(a.surname, b.surnameP) == 0)
- {
- strcpy_s(c.name,b.nameP);
- g.write((char*)&c, sizeof(A));
- }
- }
- f1.seekg(0);
- }
- }
- void showNewBin(ifstream &f)
- {
- A a;
- while (f.peek() != EOF)
- {
- f.read((char *)&a, sizeof A);
- cout << a.adrA.street << ' ' << a.adrA.dom << ' ' << a.adrA.nomK << ' ' << a.name<<endl;
- }
- }
- int main()
- {
- setlocale(LC_ALL, "RUS");
- ifstream in("Подписные_Издания.txt");
- ofstream outBinIzdan("Text1.bin", ios::binary);
- formBinIzdan(in, outBinIzdan);
- in.close();
- outBinIzdan.close();
- ifstream in1("Подписчики.txt");
- ofstream outBinSubscribers("Text2.bin", ios::binary);
- formBinSubscribers(in1, outBinSubscribers);
- in1.close();
- outBinSubscribers.close();
- ifstream in2("Подписка.txt");
- ofstream outBinPodpiska("Text3.bin", ios::binary);
- formBinPodpiska(in2, outBinPodpiska);
- in2.close();
- outBinPodpiska.close();
- ifstream inBin("Text1.bin", ios::binary); //издания
- ifstream inBin1("Text2.bin", ios::binary); //подписчики
- ifstream inBin2("Text3.bin", ios::binary); //подписка
- ofstream outBin("rezult.bin", ios::binary);
- formNewBin(inBin1,inBin2,inBin,outBin);
- inBin.close();
- inBin1.close();
- inBin2.close();
- outBin.close();
- ifstream outBinin("rezult.bin", ios::binary);
- showNewBin(outBinin);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment