Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <io.h>
- #include<iomanip>
- using namespace std;
- FILE* fl;
- struct train_to_brest //struct
- {
- int time_to;
- char place_to[50];
- int available_places;
- }train,*tr;
- int menu_list(); // 1.menu list
- void creating_f(); // 3.create new file
- void filling_f(); // 4.filling FILE
- void reading_f(); // 5.file reading
- void conclusion_screen(); // 6.conclusion_screen
- void conclusion_file(); // 7.conclusion_file
- int main()
- {
- while (true)
- {
- switch (menu_list())
- {
- case 1: creating_f(); break;
- case 2: filling_f(); break;
- case 3: reading_f(); break;
- case 4: conclusion_screen(); break;
- case 5: conclusion_file(); break;
- case 6: return 0;
- default: cout<<"Choose correct!" << endl;
- }
- cout << "Write any key" << endl;
- }
- }
- int menu_list()
- {
- cout << "Choose: " << endl;
- cout << "1.create new file" << endl;
- cout << "2.filling FILE" << endl;
- cout << "3.file reading" << endl;
- cout << "4.conclusion_screen" << endl;
- cout << "5.conclusion_file" << endl;
- cout << "6.exit" << endl;
- int k; cin >> k;
- return k;
- }
- void creating_f() //creatin file
- {
- if ((fl = fopen("struct.dat", "wb")) == NULL)
- {
- cout << "file didn't create" << endl;
- }
- else cout << "file created GOOD"<<endl;
- fclose(fl);
- }
- void filling_f() //filling file
- {
- if ((fl = fopen("struct.dat", "rb+")) == NULL)
- {
- cout << "file didn't write" << endl;
- }
- else cout << "file write GOOD";
- char ch[10];
- int count = 0;
- do
- {
- cout << "Enter time_to: " << endl; cin >> train.time_to;
- cout << "Enter Place_to: " << endl; cin >> train.place_to;
- cout << "Enter available_places: " << endl; cin >> train.available_places;
- fwrite(&train, sizeof(train_to_brest), 1, fl); //writing
- cout << "Do u want to continue? Yes / No " << endl;
- cin >> ch;
- } while (strcmp(ch, "yes") == 0);
- fclose(fl);
- }
- void reading_f()
- {
- if ((fl = fopen("struct.dat", "rb+")) == NULL)
- {
- cout << "file didn't read" << endl;
- }
- else cout << "file readed GOOD" << endl;
- int n = 0;
- n = _filelength(_fileno(fl)) / sizeof(train_to_brest);
- rewind(fl);
- for(int i=0; i<n ; i++)
- {
- cout << "--------------------------------------------------"<<endl;
- fread(&train, sizeof(train_to_brest), 1, fl);
- cout << "PLace_to: " << train.place_to << endl;
- cout << "Time_to: " << train.time_to << endl;
- cout << "Available places: " << train.available_places << endl;
- cout << "--------------------------------------------------" << endl;
- }
- fclose(fl);
- }
- void conclusion_screen() // screen
- {
- if ((fl = fopen("struct.dat", "rb+")) == NULL)
- {
- cout << "file didn't read" << endl;
- }
- else cout << "file readed GOOD" << endl;
- rewind(fl);
- int n = 0;
- n = _filelength(_fileno(fl)) / sizeof(train_to_brest);
- rewind(fl);
- fread(&train, sizeof(train_to_brest), 1, fl);
- int min = train.available_places;
- int count;
- cout << endl << "Conclusion on SCREEN:" << endl;
- cout << "Trains to brest: available_places from MIN to MAX" << endl;
- train_to_brest k, k_i;
- int count_mesto = 0;
- bool p;
- for (int i = 0; i < n; i++)
- {
- p = false;
- fseek(fl, sizeof(train_to_brest) * i, 0);
- fread(&train, sizeof(train_to_brest), 1, fl);
- k_i=train;
- count = i;
- if (strcmp(train.place_to, "brest") == 0)
- {
- min = train.available_places;
- while (fread(&train, sizeof(train_to_brest), 1, fl) == 1)
- {
- count++;
- if (train.available_places < min && (strcmp(train.place_to, "brest") == 0))
- {
- p=true;
- min = train.available_places;
- count_mesto = count;
- }
- }
- if (p == true)
- {
- fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
- fread(&train, sizeof(train_to_brest), 1, fl);
- fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
- k = train;
- fwrite(&k_i, sizeof(train_to_brest), 1, fl);
- fseek(fl, sizeof(train_to_brest) * i, 0);
- fwrite(&k, sizeof(train_to_brest), 1, fl);
- }
- }
- }
- rewind(fl);
- cout << endl << endl;
- while (fread(&train, sizeof(train_to_brest), 1, fl) == 1)
- {
- if (strcmp(train.place_to, "brest") == 0)
- {
- cout << "--------------------------------------------------" << endl;
- cout << "PLace_to: " << train.place_to << endl;
- cout << "Time_to: " << train.time_to << endl;
- cout << "Available places: " << train.available_places << endl;
- cout << "--------------------------------------------------" << endl;
- }
- }
- fclose(fl);
- cout << endl;
- }
- void conclusion_file()
- {
- if ((fl = fopen("struct.dat", "rb+")) == NULL)
- {
- cout << "file didn't read" << endl;
- }
- else cout << "file readed GOOD" << endl;
- rewind(fl);
- int n = 0;
- n = _filelength(_fileno(fl)) / sizeof(train_to_brest);
- rewind(fl);
- fread(&train, sizeof(train_to_brest), 1, fl);
- int min = train.available_places;
- int count;
- cout << endl << "Conclusion on SCREEN:" << endl;
- cout << "Trains to brest: available_places from MIN to MAX" << endl;
- train_to_brest k, k_i;
- int count_mesto = 0;
- bool p;
- for (int i = 0; i < n; i++)
- {
- p = false;
- fseek(fl, sizeof(train_to_brest) * i, 0);
- fread(&train, sizeof(train_to_brest), 1, fl);
- k_i = train;
- count = i;
- if (strcmp(train.place_to, "brest") == 0)
- {
- min = train.available_places;
- while (fread(&train, sizeof(train_to_brest), 1, fl) == 1)
- {
- count++;
- if (train.available_places < min && (strcmp(train.place_to, "brest") == 0))
- {
- p = true;
- min = train.available_places;
- count_mesto = count;
- }
- }
- if (p == true)
- {
- fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
- fread(&train, sizeof(train_to_brest), 1, fl);
- fseek(fl, sizeof(train_to_brest) * count_mesto, 0);
- k = train;
- fwrite(&k_i, sizeof(train_to_brest), 1, fl);
- fseek(fl, sizeof(train_to_brest) * i, 0);
- fwrite(&k, sizeof(train_to_brest), 1, fl);
- }
- }
- }
- rewind(fl);
- cout << endl << endl;
- count = 0;
- for (int i = 0; i < n; i++)
- {
- fread(&train, sizeof(train_to_brest), 1, fl);
- if (strcmp(train.place_to, "brest") == 0)
- {
- cout << "--------------------------------------------------" << endl;
- cout << "PLace_to: " << train.place_to << endl;
- cout << "Time_to: " << train.time_to << endl;
- cout << "Available places: " << train.available_places << endl << endl;
- cout << "--------------------------------------------------" << endl;
- fseek(fl, 0, 2);
- fwrite(&train, sizeof(train_to_brest), 1, fl);
- fseek(fl, sizeof(train_to_brest) * (i + 1), 0);
- }
- }
- fclose(fl);
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement