Advertisement
ilyaaaaa

Untitled

Jan 28th, 2020
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.64 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <io.h>
  8. #include<iomanip>
  9.  
  10. using namespace std;
  11. FILE* fl;
  12.  
  13.  
  14. struct train_to_brest   //struct
  15. {
  16.     int time_to;
  17.     char place_to[50];
  18.     int available_places;
  19. }train,*tr;
  20.  
  21. int  menu_list();   // 1.menu list
  22.  
  23. void creating_f();  // 3.create new file
  24. void filling_f();   // 4.filling FILE
  25. void reading_f();   // 5.file reading
  26. void conclusion_screen();  // 6.conclusion_screen
  27. void conclusion_file();    // 7.conclusion_file
  28.  
  29. int main()
  30. {
  31.     while (true)
  32.     {
  33.         switch (menu_list())
  34.         {
  35.         case 1: creating_f(); break;
  36.         case 2: filling_f(); break;
  37.         case 3: reading_f(); break;
  38.         case 4: conclusion_screen(); break;
  39.         case 5: conclusion_file(); break;
  40.         case 6: return 0;
  41.         default: cout<<"Choose correct!" << endl;
  42.         }
  43.         cout << "Write any key" << endl;
  44.     }
  45. }
  46.  
  47. int menu_list()
  48. {
  49.     cout << "Choose: " << endl;
  50.     cout << "1.create new file" << endl;
  51.     cout << "2.filling FILE" << endl;
  52.     cout << "3.file reading" << endl;
  53.     cout << "4.conclusion_screen" << endl;
  54.     cout << "5.conclusion_file" << endl;
  55.     cout << "6.exit" << endl;
  56.     int k; cin >> k;
  57.     return k;
  58. }
  59.  
  60. void creating_f()  //creatin file
  61. {
  62.    
  63.     if ((fl = fopen("struct.dat", "wb")) == NULL)
  64.     {
  65.         cout << "file didn't create" << endl;
  66.     }
  67.     else cout << "file created GOOD"<<endl;
  68.     fclose(fl);
  69. }
  70.  
  71. void filling_f()  //filling file
  72. {
  73.     if ((fl = fopen("struct.dat", "rb+")) == NULL)
  74.     {
  75.         cout << "file didn't write" << endl;
  76.     }
  77.     else cout << "file write GOOD";
  78.  
  79.     char ch[10];
  80.     int count = 0;
  81.     do
  82.     {
  83.         cout << "Enter time_to: " << endl; cin >> train.time_to;
  84.         cout << "Enter Place_to: " << endl; cin >> train.place_to;
  85.         cout << "Enter available_places: " << endl; cin >> train.available_places;
  86.  
  87.         fwrite(&train, sizeof(train_to_brest), 1, fl); //writing
  88.  
  89.         cout << "Do u want to continue? Yes / No " << endl;
  90.         cin >> ch;
  91.     } while (strcmp(ch, "yes") == 0);
  92.  
  93.     fclose(fl);
  94. }
  95.  
  96. void reading_f()
  97. {
  98.    
  99.     if ((fl = fopen("struct.dat", "rb+")) == NULL)
  100.     {
  101.         cout << "file didn't read" << endl;
  102.     }
  103.     else cout << "file readed GOOD" << endl;
  104.  
  105.     int n = 0;
  106.  
  107.     n = _filelength(_fileno(fl)) / sizeof(train_to_brest);
  108.  
  109.     rewind(fl);
  110.  
  111.     for(int i=0; i<n ; i++)
  112.     {
  113.         cout << "--------------------------------------------------"<<endl;
  114.         fread(&train, sizeof(train_to_brest), 1, fl);
  115.         cout << "PLace_to: " << train.place_to << endl;
  116.         cout << "Time_to: " << train.time_to << endl;
  117.         cout << "Available places: " << train.available_places << endl;
  118.         cout << "--------------------------------------------------" << endl;
  119.     }
  120.     fclose(fl);
  121. }
  122. void conclusion_screen()  // screen
  123. {
  124.     if ((fl = fopen("struct.dat", "rb+")) == NULL)
  125.     {
  126.         cout << "file didn't read" << endl;
  127.     }
  128.     else cout << "file readed GOOD" << endl;
  129.     rewind(fl);
  130.  
  131.     int n = 0;
  132.  
  133.     n = _filelength(_fileno(fl)) / sizeof(train_to_brest);
  134.  
  135.     rewind(fl);
  136.     fread(&train, sizeof(train_to_brest), 1, fl);
  137.     int min = train.available_places;
  138.  
  139.     int count;
  140.     cout << endl << "Conclusion on SCREEN:" << endl;
  141.     cout << "Trains to brest: available_places from MIN to MAX" << endl;
  142.     train_to_brest k, k_i;
  143.     int count_mesto = 0;
  144.     bool p;
  145.     for (int i = 0; i < n; i++)
  146.     {
  147.         p = false;
  148.         fseek(fl, sizeof(train_to_brest) * i, 0);
  149.         fread(&train, sizeof(train_to_brest), 1, fl);
  150.  
  151.         k_i=train;
  152.         count = i;
  153.  
  154.         if (strcmp(train.place_to, "brest") == 0)
  155.         {
  156.             min = train.available_places;
  157.  
  158.             while (fread(&train, sizeof(train_to_brest), 1, fl) == 1)
  159.             {
  160.                 count++;
  161.                 if (train.available_places < min && (strcmp(train.place_to, "brest") == 0))
  162.                 {
  163.                     p=true;
  164.                     min = train.available_places;
  165.                     count_mesto = count;
  166.                 }
  167.             }
  168.             if (p == true)
  169.             {
  170.                 fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
  171.                 fread(&train, sizeof(train_to_brest), 1, fl);
  172.                 fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
  173.                 k = train;
  174.  
  175.                 fwrite(&k_i, sizeof(train_to_brest), 1, fl);
  176.  
  177.                 fseek(fl, sizeof(train_to_brest) * i, 0);
  178.                 fwrite(&k, sizeof(train_to_brest), 1, fl);
  179.             }
  180.         }
  181.     }
  182.     rewind(fl);
  183.     cout << endl << endl;
  184.     while (fread(&train, sizeof(train_to_brest), 1, fl) == 1)
  185.     {
  186.         if (strcmp(train.place_to, "brest") == 0)
  187.         {
  188.             cout << "--------------------------------------------------" << endl;
  189.             cout << "PLace_to: " << train.place_to << endl;
  190.             cout << "Time_to: " << train.time_to << endl;
  191.             cout << "Available places: " << train.available_places << endl;
  192.             cout << "--------------------------------------------------" << endl;
  193.         }
  194.     }
  195.     fclose(fl);
  196.     cout << endl;
  197.    
  198. }
  199. void conclusion_file()
  200. {
  201.     if ((fl = fopen("struct.dat", "rb+")) == NULL)
  202.     {
  203.         cout << "file didn't read" << endl;
  204.     }
  205.     else cout << "file readed GOOD" << endl;
  206.     rewind(fl);
  207.     int n = 0;
  208.  
  209.     n = _filelength(_fileno(fl)) / sizeof(train_to_brest);
  210.  
  211.     rewind(fl);
  212.    
  213.     fread(&train, sizeof(train_to_brest), 1, fl);
  214.     int min = train.available_places;
  215.  
  216.     int count;
  217.     cout << endl << "Conclusion on SCREEN:" << endl;
  218.     cout << "Trains to brest: available_places from MIN to MAX" << endl;
  219.     train_to_brest k, k_i;
  220.     int count_mesto = 0;
  221.     bool p;
  222.     for (int i = 0; i < n; i++)
  223.     {
  224.         p = false;
  225.         fseek(fl, sizeof(train_to_brest) * i, 0);
  226.         fread(&train, sizeof(train_to_brest), 1, fl);
  227.  
  228.         k_i = train;
  229.         count = i;
  230.  
  231.         if (strcmp(train.place_to, "brest") == 0)
  232.         {
  233.             min = train.available_places;
  234.  
  235.             while (fread(&train, sizeof(train_to_brest), 1, fl) == 1)
  236.             {
  237.                 count++;
  238.                 if (train.available_places < min && (strcmp(train.place_to, "brest") == 0))
  239.                 {
  240.                     p = true;
  241.                     min = train.available_places;
  242.                     count_mesto = count;
  243.                 }
  244.             }
  245.             if (p == true)
  246.             {
  247.                 fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
  248.                 fread(&train, sizeof(train_to_brest), 1, fl);
  249.                 fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
  250.                 k = train;
  251.  
  252.                 fwrite(&k_i, sizeof(train_to_brest), 1, fl);
  253.  
  254.                 fseek(fl, sizeof(train_to_brest) * i, 0);
  255.                 fwrite(&k, sizeof(train_to_brest), 1, fl);
  256.             }
  257.         }
  258.     }
  259.     rewind(fl);
  260.     cout << endl << endl;
  261.     count = 0;
  262.  
  263.     for (int i = 0; i < n; i++)
  264.     {
  265.         fread(&train, sizeof(train_to_brest), 1, fl);
  266.  
  267.         if (strcmp(train.place_to, "brest") == 0)
  268.         {
  269.             cout << "--------------------------------------------------" << endl;
  270.             cout << "PLace_to: " << train.place_to << endl;
  271.             cout << "Time_to: " << train.time_to << endl;
  272.             cout << "Available places: " << train.available_places << endl << endl;
  273.             cout << "--------------------------------------------------" << endl;
  274.  
  275.             fseek(fl, 0, 2);
  276.             fwrite(&train, sizeof(train_to_brest), 1, fl);
  277.             fseek(fl, sizeof(train_to_brest) * (i + 1), 0);
  278.         }
  279.     }
  280.         fclose(fl);
  281.         cout << endl;
  282. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement