Advertisement
Neveles

Untitled

Dec 23rd, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.03 KB | None | 0 0
  1.     void printDisciplines()
  2.     {
  3.         ofstream out("ListOfDisciplines.txt");
  4.         out << " ";
  5.         for (int i = 0; i < 47; ++i)
  6.             out << '_';
  7.         out << endl << "/                                               \\" << endl;
  8.         out << "|            SORTED LIST OF DISCIPLINES         |" << endl;
  9.         out << "\\";
  10.         for (int i = 0; i < 47; ++i)
  11.             out << '_';
  12.         out << "/" << endl;
  13.         out << "/                              |                \\" << endl;
  14.         out << "|          Discipline          |Number of Copies|" << endl;
  15.         out << "|______________________________|________________|" << endl;
  16.  
  17.         unsigned long long counter;
  18.         String curMin;
  19.         String last = "0";
  20.         bool found = false;
  21.  
  22.         while (curMin != last)
  23.         {
  24.             if (curMin[0] != '\0')
  25.                 last = curMin;
  26.             curMin = "я";
  27.             counter = 0;
  28.             found = false;
  29.  
  30.             for (Node* ptr = this->front; ptr != back; ptr = ptr->next)
  31.             {
  32.                 unsigned char firstChar = static_cast<unsigned char>(ptr->data->getDiscipline()[0]);
  33.                 if (firstChar < static_cast<unsigned char>(curMin[0]) && (last[0] == '\0' || static_cast<unsigned char>(last[0]) < firstChar))
  34.                 {
  35.                     curMin = ptr->data->getDiscipline();
  36.                     found = true;
  37.                 }
  38.                 else if (firstChar == static_cast<unsigned char>(curMin[0]) && (last[0] == '\0' || static_cast<unsigned char>(last[0]) == firstChar))
  39.                     for (unsigned int j = 0; true; ++j)
  40.                         if (static_cast<unsigned char>(ptr->data->getDiscipline()[j]) > static_cast<unsigned int>(curMin[j]))
  41.                             break;
  42.                         else if (static_cast<unsigned char>(ptr->data->getDiscipline()[j]) < static_cast<unsigned char>(curMin[j]))
  43.                         {
  44.                             curMin = ptr->data->getDiscipline();
  45.                             found = true;
  46.                             break;
  47.                         }
  48.             }
  49.  
  50.             for (Node* ptr = this->front; ptr != back; ptr = ptr->next)
  51.                 if (ptr->data->getDiscipline() == curMin)
  52.                     counter += ptr->data->getNumberOfCopies();
  53.             if (found)
  54.             {
  55.                 out << '|';
  56.                 out.setf(ios::left);
  57.                 out.width(30);
  58.                 out << curMin << '|';
  59.                 out.width(16);
  60.                 out << counter << '|' << endl;
  61.             }
  62.         }
  63.         out << "\\______________________________|________________/" << endl;
  64.         out.close();
  65.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement