Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include "string.h"
- #include "io.h"
- #include "stdlib.h"
- #include "iomanip"
- using namespace std;
- struct info
- {
- char FIO;
- char kafedra[50];
- char dolgnost[15];
- char chasy[15];
- };
- void add()
- {
- info w;
- FILE *zap;
- fopen_s(&zap, "spisok.txt", "a");
- cout << "FIO: "; cin >> w.FIO;
- cout << "kafedra: "; cin.ignore(50, '\n'); gets_s(w.kafedra);
- cout << "dolgnost: "; gets_s(w.dolgnost);
- cout << "chasy: "; gets_s(w.chasy);
- fwrite(&w, sizeof(info), 1, zap);
- fclose(zap);
- }
- void view()
- {
- info w;
- FILE *zap;
- fopen_s(&zap, "spisok.txt", "r");
- cout << setw(8) << "FIO" << setw(30) << "kafedra" << setw(15) << "dolgnost" << setw(15) << "chasy\n" << setw(60);
- while (fread(&w, sizeof(info), 1, zap))
- cout << setw(8) << w.FIO << setw(30) << w.kafedra << setw(15) << w.dolgnost << setw(15) << w.chasy << endl;
- fclose(zap);
- cout << "\n\n";
- }
- void search()
- {
- FILE *zap;
- info w;
- int num;
- fopen_s(&zap, "spisok.txt", "r");
- cout << "FIO ";
- cin >> num;
- cout << setw(30) << "kafedra" << setw(15) << "dolgnost" << setw(15) << "chasy\n";
- while (fread(&w, sizeof(info), 1, zap))
- if (w.FIO == num)
- cout << setw(30) << w.kafedra << setw(15) << w.dolgnost << setw(15) << w.chasy << endl;
- fclose(zap);
- cout << "\n\n";
- }
- void pr_vibor(info *w, int kol)
- {
- int i, j, q;
- info r;
- for (i = 0; i < kol - 1; i++)
- {
- q = i;
- for (j = i + 1; j < kol; j++)
- if (strcmp(w[j].chasy, w[q].chasy) > 0) q = j;
- if (i != q)
- {
- r = w[q];
- w[q] = w[i];
- w[i] = r;
- }
- }
- }
- void qsort(info *w, int beg, int en)
- {
- info q;
- int left = beg, right = en;
- char* x;
- x = w[(left + right) / 2].chasy;
- do
- {
- while (strcmp(x, w[left].chasy) < 0) left++;
- while (strcmp(x, w[right].chasy) > 0) right--;
- if (left <= right)
- {
- q = w[left];
- w[left] = w[right];
- w[right] = q;
- left++;
- right--;
- }
- } while (left <= right);
- if (beg < right) qsort(w, beg, right);
- if (left < en) qsort(w, left, en);
- }
- void sort()
- {
- FILE *zap;
- int kol, i = 0, vibor, num;
- fopen_s(&zap, "spisok.txt", "r");
- kol = _filelength(_fileno(zap)) / sizeof(info);
- info *w = new info[kol];
- while (fread(&w[i++], sizeof(info), 1, zap));
- cout << "FIO ";
- cin >> num;
- cout << "metod sortirovki \n1.priamoi vibor \n2.QuickSort \n";
- cin >> vibor;
- switch (vibor)
- {
- case 1: pr_vibor(w, kol); break;
- case 2: qsort(w, 0, kol - 1); break;
- }
- cout << setw(30) << "kafedra" << setw(15) << "dolgnost" << setw(15) << "chasy\n";
- for (i = 0; i < kol; i++)
- if (w[i].FIO == num)
- cout << setw(30) << w[i].kafedra << setw(15) << w[i].dolgnost << setw(15) << w[i].chasy << endl;
- }
- void main()
- {
- int menu;
- while (true)
- {
- cout << "viberite: \n1.dobavit\n2.prosmotr \n3. poisk \n4. sort \n0.vihod\n";
- cin >> menu;
- switch (menu)
- {
- case 1: add(); break;
- case 2: view(); break;
- case 3: search(); break;
- case 4: sort(); break;
- case 0: return;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement