aLT22

4semlab5 (C++)

May 29th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.45 KB | None | 0 0
  1. /* 
  2.     Создать список из объектов разных классов, которые наследуются от какого-то общего
  3.     Отобрать из списка те классы, которые удовлетворяют каким-либо условиям
  4. */
  5. #include <iostream>
  6. #include <string>
  7. // #include <vector>
  8.  
  9. using namespace std;
  10.  
  11. struct Node {
  12.     string name;
  13.     int date;
  14.     Node *next, *prev;
  15. };
  16.  
  17. class Car {
  18. private:
  19.     Node *Top;
  20. public:
  21.     Car() {
  22.         Top = NULL;
  23.     }
  24.     void add(string t, int DATE) {
  25.         Node *pnew = new Node;
  26.         if (t[t.length() - 1] == ';')
  27.             t.erase(t.length() - 1, 2);
  28.         if (Top == NULL) {
  29.             Top = pnew;
  30.             pnew -> name = t;
  31.             pnew -> date = DATE;
  32.             pnew -> next = NULL;
  33.             pnew -> prev = NULL;
  34.         }
  35.         else {
  36.             pnew -> name = t;
  37.             pnew -> date = DATE;
  38.             pnew -> next = NULL;
  39.             pnew -> prev = Top;
  40.             Top -> next = pnew;
  41.             Top = pnew;
  42.         }
  43.     }
  44.     void getList() {
  45.         while (Top -> prev != NULL)
  46.             Top = Top -> prev;
  47.         while (Top -> next != NULL) {
  48.             cout << Top -> name << " - " << Top -> date << endl;
  49.             Top = Top -> next;
  50.         }
  51.         cout << Top -> name << " -  " << Top -> date << "\n";
  52.     }
  53.     void getListYear(int year) {
  54.         while (Top -> prev != NULL) {
  55.             if (Top -> date == year) {
  56.                 cout << Top -> name << endl;
  57.             }
  58.             Top = Top -> prev;
  59.         }
  60.         if (Top -> date == year) {
  61.             cout << Top -> name << endl;
  62.         }
  63.     }
  64.     void getListNames(string type) {
  65.         while (Top -> prev != NULL) {
  66.             if (Top -> name == type) {
  67.                 cout << Top -> date << endl;
  68.             }
  69.             Top = Top -> prev;
  70.         }
  71.         if (Top -> name == type) {
  72.             cout << Top -> date << endl;
  73.         }
  74.     }
  75. };
  76.  
  77. int main() {
  78.     setlocale(LC_ALL, "Russian");
  79.     Car cars;
  80.     string names;
  81.     int year;
  82.     cout << "Введите название год и марку машины через пробел последовательно: ";
  83.     do {
  84.         cin >> year;
  85.         cin >> names;
  86.         cars.add(names, year);
  87.     } while (names[names.length() - 1] != ';');
  88.     cars.getList();
  89.     cout << "Введите по какому критерию выводить на экран информацию (1 - год выпуска, 2 - марка машины): ";
  90.     char choice;
  91.     cin >> choice;
  92.     if (choice == '1') {
  93.         int year;
  94.         cout << "Введите год: ";
  95.         cin >> year;
  96.         cars.getListYear(year);
  97.     } else {
  98.         string type;
  99.         cout << "Введите марку: ";
  100.         cin >> type;
  101.         cars.getListNames(type);
  102.     }
  103.     system("pause");
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment