Advertisement
VladimirKostovsky

Лаба 2. Паровой котел

Mar 28th, 2022
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. struct list{int el; list *next; list *pred};
  7. struct queue{list *beg, *end;};
  8.     ofstream fout("output.txt", ios_base::app);
  9.  
  10. void putToQueue(queue *q, int iEl)   //добавить в очередь
  11. {
  12.     list *tmp;
  13.     tmp = new list;
  14.     tmp->next = NULL;
  15.     tmp->el = iEl;
  16.     if(q->end != NULL)
  17.         q->end->next = tmp;
  18.     else
  19.         q->beg = tmp;
  20.     q->end = tmp;
  21. }
  22.  
  23. int takeFromQueue(queue *q, int *iEl) // взять из очереди
  24. {
  25.     if(q->beg == NULL) return 0;
  26.     list *tmp;
  27.     tmp = q->beg;
  28.     *iEl = tmp->el;
  29.     q->beg = tmp->next;
  30.     delete tmp;
  31.     if(q->beg == NULL) q->end = NULL;
  32.     return 1;
  33. }
  34.  
  35.  
  36. queue *CreateQueue()            //создать очередь
  37. {
  38.     queue *q;
  39.     q = new queue;
  40.     q->beg = NULL;
  41.     q->end = NULL;
  42.     return q;
  43. }
  44.  
  45. int isQueueEmpty(queue *q)      //проверка очереди на пустоту
  46. {
  47.     if(q->beg == NULL) { return 1;}
  48.     return 0;
  49. }
  50.  
  51. int ClearQueue(queue *q)        //очистка очереди
  52. {
  53.     if(q->beg == NULL) return 0;
  54.     list *tmp, *t;
  55.     tmp = q->beg;
  56.     while(tmp->next != NULL)
  57.     {
  58.         t = tmp;
  59.         tmp = t->next;
  60.         delete t;
  61.     }
  62.     q->beg = NULL;
  63.     q->end = NULL;
  64.     return 1;
  65. }
  66.  
  67. void PrintQueue(queue *q)       //вывести очередь на экран
  68. {
  69.     printf("\n");
  70.     queue *tmp = CreateQueue();
  71.     int iEl;
  72.     while(!isQueueEmpty(q))
  73.     {
  74.         takeFromQueue(q, &iEl);
  75.         fout << iEl << " ";
  76.         putToQueue(tmp, iEl);
  77.     }
  78.     while(!isQueueEmpty(tmp))
  79.     {
  80.         takeFromQueue(tmp, &iEl);
  81.         putToQueue(q, iEl);
  82.     }
  83.     fout << endl;
  84. }
  85.  
  86. int main()
  87. {
  88.     int i;
  89.     queue *q = CreateQueue();
  90.     fout << (".......Put Elems..............") << endl;
  91.     ifstream F;
  92.     F.open("input.txt");
  93.  
  94.     if (!F.is_open())
  95.     {
  96.         fout << "Файл не открылся! Проверь название/существование" << endl;
  97.     }
  98.     else {
  99.         fout << "Opening file" << endl;
  100.  
  101.         while (!F.eof())
  102.         {
  103.             F >> i; // заглавное звено
  104.             putToQueue(q, i);
  105.             PrintQueue(q);
  106.         }
  107.     {
  108.         putToQueue(q, i);
  109.         PrintQueue(q);
  110.     }
  111.     }
  112.     fout << ("\n......Take Elems...............") << endl;
  113.     fout << endl;
  114.     PrintQueue(q);
  115.     while(!isQueueEmpty(q))
  116.     {
  117.         takeFromQueue(q, &i);
  118.         PrintQueue(q);
  119.     }
  120.     fout << ("\n........Put Elems.............") << endl;
  121.     for(i=30; i<35; i++)
  122.     {
  123.         putToQueue(q, i);
  124.         PrintQueue(q);
  125.     }
  126.     fout << ("\n........Clear queue.............") << endl;
  127.     ClearQueue(q);
  128.     PrintQueue(q);
  129. }
  130.  
  131.  /*
  132.  Что же пишут в газетах в разделе «Из зала суда»?
  133. Приговор приведен в исполненье. Взглянувши сюда,
  134. обыватель узрит сквозь очки в оловянной оправе,
  135. как лежит человек вниз лицом у кирпичной стены;
  136. но не спит. Ибо брезговать кумполом сны
  137. продырявленным вправе.  
  138. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement