Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- #include<string>
- const string bgS = "абвгдежзийклмнопрстуфхцчшщьъюя"
- "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЮЯ";
- bool validName(string str) {
- if (str.length() == 0
- || string::npos == bgS.find(str.front(), 1)
- || string::npos == bgS.find(str.back(), 1))
- return false;
- return string::npos == str.find_first_not_of(bgS);
- }
- struct TFamWage {
- string fam;
- double minW, maxW;
- };
- struct TS {
- string name;
- double wage;
- };
- void readStruct(TS & s) {
- do {
- cout << " zaplata: ";
- cin >> s.wage;
- } while (s.wage <= 0.0);
- getline(cin, s.name);
- do {
- cout << " imena (bylg. b. i intervali): ";
- getline(cin, s.name);
- } while (! validName(s.name) );
- }
- void writeStruct(TS * p) {
- cout << " " << p->name
- << " sys zaplata " << p->wage << endl;
- }
- void readArray(TS a[], int L) {
- cout << "Vyvedete danni za " << L << " slujitelq:\n";
- for (int i = 0; i < L; ++i) {
- cout << " " << i + 1 << "-i slujitel:\n";
- readStruct(a[i]);
- }
- }
- void writeArray(TS a[], int L) {
- cout << "Slujiteli:\n";
- for (int i = 0; i < L; ++i) writeStruct(&a[i]);
- }
- void sortWage(TS a[], int L) {
- for (int pos = L - 1; 0 < pos; --pos) {
- int iMin = pos;
- for (int i = 0; i < pos; ++i)
- if (a[i].wage < a[iMin].wage) iMin = i;
- TS temp = a[iMin];
- a[iMin] = a[pos];
- a[pos] = temp;
- }
- }
- void viewFamWage(TS a[], int L, string fw[], int & famNum) {
- famNum = 0;
- for (int i = 0; i < L; ++i) {
- size_t LastSpace = a[i].name.rfind(' ');
- if (LastSpace == string::npos)
- fw[famNum] = a[i].name;
- else fw[famNum] = a[i].name.substr(LastSpace + 1);
- int first = 0;
- while (fw[first] != fw[famNum])++first;
- if (first == famNum) {
- fw[famNum].minW = fw[famNum].maxW = a[i].wage;
- fw[famNum].num = 1;
- ++famNum;
- }
- }
- else {
- ++fw[famNum].num;
- if (fw[first].minW > a[i].wage) fw[first].minW = a[i].wage;
- else if (fw[first].maxW < a[i].wage) fw[first].maxW = a[i].wage;
- }
- }
- for (int i = 0; i < famNum; ++i) {
- cout << fw[i].fam << "se sreshta " << fw[i].num
- << " put(-i);\n minimalna zaplata: "fw[i].minW
- << "maksimalna zaplata " << fw[i].maxW << endl;
- }
- int main() {
- system("chcp 1251");
- const int number = 4;
- TS ar[number];
- readArray(ar, number);
- sortWage(ar, number);
- writeArray(ar, number);
- TFamWage famW[number];
- string fam[number];
- int famNum;
- viewFamWage(ar, number,fam , famNum);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement