Advertisement
SSemen

Untitled

Jan 7th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<string>
  5. #include<iostream>
  6.  
  7. using namespace std;
  8.  
  9. struct School {
  10.     string name;
  11.     string sur;
  12.     string klassAlpha;
  13.     string data;
  14.     int klassDigit;
  15.     School() {
  16.         name = "";
  17.         sur = "";
  18.         klassAlpha = "";
  19.         klassDigit = 0;
  20.         data = "";
  21.     }
  22.     School(string Name, string Sur, string KlassAlpha, string Data, int KlassDigit) {
  23.         name = Name;
  24.         sur = Sur;
  25.         klassAlpha = KlassAlpha;
  26.         data = Data;
  27.         klassDigit = KlassDigit;
  28.     }
  29. };
  30.  
  31. School e[110];
  32.  
  33. // string - это стандартная структура языка
  34. void klassAlphaDigit(string KlasssAlphaDigit, string &KlassAlpha, int &KlassDigit) {
  35.     bool flag = false;
  36.     int k = 0;
  37.     for (char& i : KlasssAlphaDigit) {
  38.         if (isalpha(KlasssAlphaDigit[i]) && !flag) {
  39.             flag = true;
  40.             KlassDigit = KlasssAlphaDigit[i] - '0';
  41.         }
  42.         else if (isalpha(KlasssAlphaDigit[i]) && flag) {
  43.             KlassDigit = KlassDigit * 10 + KlasssAlphaDigit[i] - '0';
  44.         }
  45.         else if (isdigit(KlasssAlphaDigit[i])) {
  46.             KlassAlpha[k] = KlasssAlphaDigit[i];
  47.             k++;
  48.         }
  49.     }
  50. }
  51.  
  52. bool compare(School x, School y) {
  53.     if (x.klassDigit < y.klassDigit) {
  54.         return x.klassDigit < y.klassDigit;
  55.     }
  56.     else if (x.klassDigit == y.klassDigit) {
  57.         return x.klassAlpha < y.klassAlpha;
  58.     }
  59.     else if (x.klassDigit == y.klassDigit && x.klassAlpha == y.klassAlpha) {
  60.         return x.sur < y.name;
  61.     }
  62. }
  63.  
  64. int main() {
  65.     int n, KlassDigit;
  66.     string KlasssAlphaDigit, KlassAlpha, Data, Name, Sur;
  67.     scanf("%d", &n);
  68.     for (int i = 0; i < n; i++) {
  69.         scanf("%s%s%s%s", &Sur, &Name, &KlasssAlphaDigit, &Data);
  70.         klassAlphaDigit(KlasssAlphaDigit, KlassAlpha, KlassDigit);
  71.         e[i] = School(Name, Sur, KlassAlpha, Data, KlassDigit);
  72.     }
  73.     sort(e, e + n, compare);
  74.     for (int i = 0; i < n; i++) {
  75.         printf("%d%s %s %s %s\n", e[i].klassDigit, e[i].klassAlpha, e[i].sur, e[i].name, e[i].data);
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement