Advertisement
cacodemon665

Лаба 13 Вариант 3

Apr 3rd, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <time.h>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. struct StackNode
  7. {
  8.     int value;
  9.     StackNode* next;
  10. };
  11.  
  12. StackNode* Add(StackNode* node, int value)
  13. {
  14.     StackNode* new_node = new StackNode;
  15.     new_node->value = value;
  16.     new_node->next = node;
  17.  
  18.     return new_node;
  19. }
  20.  
  21. void Print(StackNode* node)
  22. {
  23.     if (!node)
  24.         return;
  25.  
  26.     cout << node->value << " ";
  27.  
  28.     Print(node->next);
  29. }
  30.  
  31. void DeleteAll(StackNode* node)
  32. {
  33.     if (!node)
  34.         return;
  35.  
  36.     DeleteAll(node->next);
  37.     delete node;
  38. }
  39.  
  40. int main()
  41. {
  42.     const int stack_size = 20;
  43.     StackNode* top = nullptr;
  44.     int sum = 0;
  45.  
  46.     srand(time(0));
  47.  
  48.     for (int i = 0; i < stack_size; i++)
  49.     {
  50.         //top = Add(top, rand() % 101 - 50);
  51.  
  52.         int temp;
  53.         cin >> temp;
  54.         top = Add(top, temp);
  55.  
  56.         sum += top->value;
  57.     }
  58.  
  59.     cout << "Stack 1: ";
  60.  
  61.     Print(top);
  62.  
  63.     cout << endl;
  64.  
  65.     double average = sum / (double)stack_size;
  66.     StackNode *top2 = nullptr, *current = top;
  67.  
  68.     //cout << "Sum: " << sum << endl;
  69.     cout << "Average: " << average << endl;
  70.  
  71.     while (current)
  72.     {
  73.         if (current->value >= average)
  74.         {
  75.             top2 = Add(top2, current->value);
  76.         }
  77.  
  78.  
  79.         current = current->next;
  80.     }
  81.  
  82.     cout << "Stack 2: ";
  83.  
  84.     Print(top2);
  85.  
  86.     cout << endl;
  87.  
  88.  
  89.     DeleteAll(top);
  90.     DeleteAll(top2);
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement