Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include "iostream"
- #include "time.h"
- #include <string>
- using namespace std;
- struct Bank
- {
- string name;
- int inc[4];
- };
- class TBank
- {
- private:
- Bank * mass;
- int n;
- public:
- TBank(int nn = 5);
- ~TBank();
- void vvod();
- void vivod();
- int Max(int Bank);
- int Sum(int Bank);
- void rnd();
- void sort(int POLE, int pr);
- void filevivod(string path, string pathbin);
- };
- TBank::TBank(int nn)
- {
- n = nn;
- mass = new Bank[n];
- }
- TBank::~TBank()
- {
- delete[]mass;
- }
- void TBank::sort(int POLE, int pr)
- {
- Bank x;
- int i, j, b;
- for (i = 0; i < n - 1; i++)
- {
- for (j = i + 1; j < n; j++)
- {
- switch (POLE)
- {
- case 1:
- b = strcmp(mass[i].name.c_str(), mass[j].name.c_str()) > 0;
- break;
- case 2: case 3: case 4: case 5:
- b = mass[i].inc[POLE - 2] > mass[j].inc[POLE - 2];
- break;
- case 6:
- b = Max(i) > Max(j);
- break;
- case 7:
- b = Sum(i) > Sum(j);
- break;
- }
- if (pr) b = !b;
- if (b)
- {
- x = mass[i];
- mass[i] = mass[j];
- mass[j] = x;
- }
- }
- }
- }
- void TBank::vvod()
- {
- for (int i = 0; i < n; i++)
- {
- cout << "Введите название банка:" << endl;
- cin >> mass[i].name;
- for (int j = 0; j < 4; j++)
- {
- cout << "Введите денежные поступления за квартал " << j + 1 << endl;
- cin >> mass[i].inc[j];
- }
- }
- }
- void TBank::rnd()
- {
- int t,z;
- for (int i = 0; i < n; i++)
- {
- char *grsh = new char;
- t = 3 + rand() % 10;
- for (z = 0; z < t; z++)
- {
- grsh[z] = char(65 + rand() % 26);
- }
- grsh[z] = '\0';
- mass[i].name = grsh;
- for (int j = 0; j < 4; j++)
- {
- mass[i].inc[j] = rand() % 999 + 1;
- }
- }
- }
- int TBank::Max(int Bank)
- {
- int max = 0;
- for (int j = 0; j < 4; j++)
- {
- if (mass[Bank].inc[j] > max)
- {
- max = mass[Bank].inc[j];
- }
- }
- return max;
- }
- int TBank::Sum(int Bank)
- {
- int sum = 0;
- for (int j = 0; j < 4; j++)
- {
- sum += mass[Bank].inc[j];
- }
- return sum;
- }
- void TBank::vivod()
- {
- printf("%-20s", "(1) Банк");
- printf("%-16s", "(2) 1й квартал");
- printf("%-16s", "(3) 2й квартал");
- printf("%-16s", "(4) 3й квартал");
- printf("%-16s", "(5) 4й квартал");
- printf("%-16s", "(6) Максимум");
- printf("%-16s", "(7) Сумма");
- printf("\n");
- for (int i = 0; i < n; i++)
- {
- printf("%-20s", mass[i].name.c_str());
- printf("%-16d", mass[i].inc[0]);
- printf("%-16d", mass[i].inc[1]);
- printf("%-16d", mass[i].inc[2]);
- printf("%-16d", mass[i].inc[3]);
- printf("%-16d", Max(i));
- printf("%-16d", Sum(i));
- cout << endl;
- }
- }
- void TBank::filevivod(string path, string pathbin) {
- FILE *f, *b;
- fopen_s(&f, path.c_str(), "wt");
- fprintf(f, "%-20s", "Банк");
- fprintf(f, "%-16s", "1й квартал");
- fprintf(f, "%-16s", "2й квартал");
- fprintf(f, "%-16s", "3й квартал");
- fprintf(f, "%-16s", "4й квартал");
- fprintf(f, "%-16s", "Максимум");
- fprintf(f, "%-16s", "Сумма");
- fprintf(f, "\n");
- for (int i = 0; i < n; i++)
- {
- fprintf(f, "%-20s", mass[i].name.c_str());
- fprintf(f, "%-16d", mass[i].inc[0]);
- fprintf(f, "%-16d", mass[i].inc[1]);
- fprintf(f, "%-16d", mass[i].inc[2]);
- fprintf(f, "%-16d", mass[i].inc[3]);
- fprintf(f, "%-16d", Max(i));
- fprintf(f, "%-16d", Sum(i));
- fprintf(f, "\n");
- }
- fclose(f);
- cout << "Произведена запись таблицы в файл C:\\Users\\STUD\\Desktop\\files\\text.txt " << endl;
- fopen_s(&b, pathbin.c_str(), "wb");
- for (int i = 0; i < n; i++)
- {
- fwrite(mass + i, sizeof(Bank), 1, b);
- }
- fclose(b);
- cout << "Произведена запись таблицы в файл C:\\Users\\STUD\\Desktop\\files\\test.bin " << endl;
- }
- int main()
- {
- srand(time(0));
- setlocale(LC_ALL, "RUS");
- int x;
- int k;
- int qq, wqwqw;
- cout << "Введите количество банков в городе:" << endl;
- cin >> k;
- TBank a(k);
- cout << "1-random , 0 нет" << endl;
- cin >> x;
- if (x == 1)a.rnd();
- else a.vvod();
- a.vivod();
- char option = 1;
- do {
- system("cls");
- a.vivod();
- cout << "Введите номер столбца (1-7) для сортировки или 0 что бы пропустить сортировку" << endl;
- cin >> qq;
- if (qq != 0)
- {
- cout << "1 - по убыванию, 0 - по возрастанию" << endl;
- cin >> wqwqw;
- a.sort(qq, wqwqw);
- }
- system("cls");
- cout << "Отсортированная таблица: " << endl;
- a.vivod();
- cout << "Нажмите 0 для выхода, любую другую клавишу для продолжения" << endl;
- cin >> option;
- } while (option != '0');
- a.filevivod("C:\\Users\\STUD\\Desktop\\files\\text.txt", "C:\\Users\\STUD\\Desktop\\files\\test.bin");
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement