Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> //библиотеки
- #include <iomanip>
- #include <string.h>
- #include <windows.h>
- #include <fstream>
- using namespace std; //пространство имён
- const int nmax=100; //максимальный размер массива
- struct tOrg // объявление структуры
- {
- char otdel[30], //название отдела
- name[20], //имя начальника
- fam[20], //фамилия начальника
- otch[20]; //отчество начальника
- int num, //номер кабинета
- people; //количество сотрудников
- };
- int inputmas(tOrg org[], int n, char *orgfilename) //функция считывания данных из файла
- {
- ifstream fin;
- fin.open(orgfilename);
- if(fin)
- {
- while ((!fin.eof())&&(n<nmax))
- {
- fin>>org[n].otdel;
- fin>>org[n].name;
- fin>>org[n].fam;
- fin>>org[n].otch;
- fin>>org[n].num;
- fin>>org[n].people;
- n++;
- }
- fin.close();
- }
- else cout<<"такого файла нет"<<endl;
- return n; //возвращает количество отделов
- }
- void outputmas (tOrg org[], int k) //функция вывода информации об отделе, количество сотрудников которого не меньше, заданного с клавиатуры
- {
- cout<<"введите количество сотрудников для проверки"<<endl;
- int c,q=0;
- cin>>c;
- cout<<setw(20)<<left<<"название отдела"<<setw(20)<<"фамилия начальника"<<setw(20)<<"имя начальника"<<setw(25)<<"отчество начальника"<<setw(20)<<"Ќомер кабинета"<<setw(20)<<" оличество сотрудников"<<endl;
- for (int i=0;i<k;i++)
- {
- if (org[i].people >= c)
- {
- q++;
- cout<<endl;
- cout<<setw(20)<<org[i].otdel<<setw(20)<<org[i].fam<<setw(20)<<org[i].name<<setw(25)<<org[i].otch
- <<setw(20)<<org[i].num<<setw(20)<<org[i].people<<endl;
- }
- }
- if (q==0) cout<<"таких отделов нет"<<endl; //проверка
- }
- void orginfo(tOrg org[], int k, char fam1[]) //функция поиска отдела по фамилии начальника
- {
- int q=0;
- cout<<setw(20)<<left<<"название отдела"<<setw(20)<<"фамилия начальника"<<setw(20)<<"имя начальника"<<setw(25)<<"отчество начальника"<<setw(20)<<"номер кабинета"<<setw(20)<<"количество сотрудников"<<endl;
- for (int i=0;i<k;i++)
- {
- if (strcmp(org[i].fam, fam1)==0)
- {
- q++;
- cout<<endl;
- cout<<setw(20)<<org[i].otdel<<setw(20)<<org[i].fam<<setw(20)<<org[i].name<<setw(25)<<org[i].otch
- <<setw(20)<<org[i].num<<setw(20)<<org[i].people<<endl;
- }
- }
- if (q==0) cout<<"таких отделов нет"<<endl; //проверка
- }
- void sort(tOrg org[], int k) //функция сортировки и вывода
- {
- tOrg temp;
- bool fl;
- do
- {
- fl=1; //поднимаем флаг
- for (int i=0;i<k-1;i++)
- if (strcmp(org[i].otdel,org[i+1].otdel)>0)
- {
- temp=org[i];
- org[i]=org[i+1];
- org[i+1]=temp;
- fl=0; //если поменяли местами, опускаем флаг
- }
- }
- while (!fl);
- }
- void masout(tOrg org[], int k)
- {
- char sortfile[100];
- cout<<"введите имя файла для сортировки"<<endl;
- cin>>sortfile;
- ofstream fout(sortfile);
- fout<<setw(20)<<left<<"название отдела"<<setw(20)<<"фамилия начальника"<<setw(20)<<"имя начальника"<<setw(25)<<"отчество начальника"<<setw(20)<<"номер кабинета"<<setw(20)<<"количество сотрудников"<<endl;
- for (int l=0;l<k;l++)
- {
- fout<<endl;
- fout<<setw(20)<<org[l].otdel<<setw(20)<<org[l].fam<<setw(20)<<org[l].name<<setw(25)<<org[l].otch
- <<setw(20)<<org[l].num<<setw(20)<<org[l].people<<endl;
- }
- }
- int main(void) //главная функция
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- tOrg org[nmax];
- int n=0,k;
- char filename[100];
- cout<<"введите имя файла с данными организации"<<endl;
- cin>>filename;
- k=inputmas(org, n, filename);
- if (k>0) //если введены данные хотя бы одного отдела
- {
- outputmas (org, k); //вызов функции вывода по количеству
- cout<<endl<<"введите фамилию начальника отдела"<<endl;
- char fam1[20];
- cin>>fam1;
- orginfo (org, k, fam1); //вызов функции поиска по фамилии
- sort (org, k); //вызов функции сортировки
- masout(org,k); //вызов функции вывода в файл
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment