Advertisement
palenda21

9B12

Mar 12th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.77 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <string>
  4. #include <io.h>
  5.  
  6. using namespace std;
  7. FILE* file;
  8.  
  9. struct ych {
  10.     char naz[20], fam[20];
  11.     int och;
  12. } spisok,*sp;
  13. void create();
  14. void write();
  15. void OpenAndShow();
  16. void show();
  17. void consolOut();
  18. int menu();
  19.  
  20. int main()
  21. {
  22.     setlocale(LC_ALL, "rus");
  23.     while (true) {
  24.         switch (menu()) {
  25.         case 1: create(); cout << "Файл создан!" << endl; break;
  26.         case 2: write(); break;
  27.         case 3: OpenAndShow(); break;
  28.         case 4: show(); break;
  29.         case 5: consolOut(); cout << "Результат записан в текстовый файл! " << endl; break;
  30.         case 6: exit(0);
  31.         default: cout << "Выберите правильный вариант";
  32.         }
  33.     }
  34. }
  35. int menu() {
  36.     cout << "Выбирайте:" << endl;
  37.     cout << "1. Создать файл" << endl;
  38.     cout << "2. Записать данные в файл" << endl;
  39.     cout << "3. Открыть файл и прочитать данные" << endl;
  40.     cout << "4. Вывести результат на экран" << endl;
  41.     cout << "5. Вывести результат в текстовый файл" << endl;
  42.     cout << "6. Выйти из программы" << endl;
  43.     int i; cin >> i; cin.ignore();
  44.     return i;
  45. }
  46. void create() {
  47.     if ((file = fopen("lab9.dat", "wb")) == NULL)
  48.     {
  49.         cout << "Файл не создан" << endl;
  50.     }
  51.     fclose(file);
  52. }
  53. void write() {
  54.     if ((file = fopen("lab9.dat", "ab")) == NULL)
  55.     {
  56.         cout << "Файл не создан" << endl;
  57.     }
  58.     string answer;
  59.     do {
  60.         cout << "введите название учебного учреждения\t"; cin >> spisok.naz;
  61.         cout << "\nвведите фамилию ученика \t"; cin >> spisok.fam;
  62.         cout << "\nвведите количество набранных очков\t"; cin >> spisok.och; cin.ignore();
  63.         fwrite(&spisok, sizeof(ych), 1, file);
  64.         cout << "\n\tбудете вводить ещё? (yes/no)" << endl;
  65.         cin >> answer; cin.ignore();
  66.     } while (answer == "yes");
  67.     fclose(file);
  68. }
  69. void OpenAndShow() {
  70.     if ((file = fopen("lab9.dat", "rb")) == NULL)
  71.     {
  72.         cout << "Файл не создан" << endl;
  73.     }
  74.     int n; n = _filelength(_fileno(file)) / sizeof(ych);
  75.     for (int i = 0; i < n; i++)
  76.     {
  77.         fread(&spisok, sizeof(ych), 1, file);
  78.         cout << "\nНазвание учебного заведения: " << spisok.naz;
  79.         cout << "\nФамилия: " << spisok.fam << endl;
  80.         cout << "Колличество очков: " << spisok.och << endl;
  81.     }
  82.     fclose(file);
  83. }
  84. void show() {
  85.     if ((file = fopen("lab9.dat", "rb+")) == NULL)
  86.     {
  87.         cout << "Файл не создан" << endl;
  88.     }
  89.     int n; n = _filelength(_fileno(file)) / sizeof(ych);
  90.     ych tmp;
  91.     sp = new ych[n];
  92.     fread(sp, sizeof(ych), n, file);
  93.     for (int i = 0; i < n - 1; i++)
  94.         for (int j = i + 1; j < n; j++)
  95.             if (sp[i].och < sp[j].och)
  96.             {
  97.                 tmp = sp[j];
  98.                 sp[j] = sp[i];
  99.                 sp[i] = tmp;
  100.             }
  101.     for (int i = 0; i < n; i++)
  102.     {
  103.         if (strcmp(sp[i].naz, "BSUIR") == 0) {
  104.             cout << "\nНазвание учебного заведения: " << sp[i].naz;
  105.             cout << "\nФамилия: " << sp[i].fam << endl;
  106.             cout << "Количество очков: " << sp[i].och << endl;
  107.         }
  108.     }
  109.     delete[] sp;
  110.     fclose(file);
  111. }
  112.  
  113. void consolOut()
  114. {
  115.     if ((file = fopen("lab9.dat", "ab+")) == NULL)
  116.     {
  117.         cout << "Файл не создан" << endl;
  118.     }
  119.     int n; n = _filelength(_fileno(file)) / sizeof(ych);
  120.     ych tmp;
  121.     sp = new ych[n];
  122.     fread(sp, sizeof(ych), n, file);
  123.     for (int i = 0; i < n - 1; i++)
  124.         for (int j = i + 1; j < n; j++)
  125.             if (sp[i].och < sp[j].och)
  126.             {
  127.                 tmp = sp[j];
  128.                 sp[j] = sp[i];
  129.                 sp[i] = tmp;
  130.             }
  131.     for (int i = 0; i < n; i++)
  132.     {
  133.         if (strcmp(sp[i].naz, "BSUIR") == 0) fwrite(&sp[i], sizeof(ych), 1, file);
  134.     }
  135.     delete[] sp;
  136.     fclose(file);
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement