bogdan_obukhovskii

16

Apr 22nd, 2020
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. //queue element с ошибкой в названии, медведкова привыкла писать так
  7. struct QEUE_ELENENT
  8. {
  9.     int info;        //информация
  10.     QEUE_ELENENT* next; //указатель на следующий элемент
  11. };
  12.  
  13. //класс очереди
  14. class Qeue
  15. {
  16.     QEUE_ELENENT* head; //указатель на начало нашего списка
  17.     //указатель на конец можно, но мы пишем простейший код на троечку
  18.  
  19. public:
  20.     Qeue() : head(NULL){}; //конструктор
  21.  
  22.     //добавление в конец
  23.     void push(int input)
  24.     {
  25.         QEUE_ELENENT* temp = new QEUE_ELENENT;
  26.         temp->next = NULL;
  27.         temp->info = input;
  28.  
  29.         if (head == NULL)
  30.         {
  31.             head = temp;
  32.             return;
  33.         }
  34.         if (head->next == NULL)
  35.         {
  36.             head->next = temp;
  37.             return;
  38.         }
  39.  
  40.         QEUE_ELENENT* t = head;
  41.         while (t->next != NULL)
  42.         {
  43.             t = t->next;
  44.         }
  45.         t->next = temp;
  46.     }
  47.  
  48.     //удаление первого элемента
  49.     void pop()
  50.     {
  51.         if (head->next == NULL)
  52.             head = NULL;
  53.         else
  54.             head = head->next;
  55.     }
  56.  
  57.     //вывод всех элементов
  58.     void print()
  59.     {
  60.         QEUE_ELENENT* t = head;
  61.         while (t != NULL)
  62.         {
  63.             cout << t->info << endl;
  64.             t = t->next;
  65.         }
  66.     }
  67.  
  68.     //заполнение с файла
  69.     void fillFromFile()
  70.     {
  71.         ifstream f("file.txt");
  72.        
  73.         int temp;
  74.  
  75.         while (!f.eof())
  76.         {
  77.             f >> temp;
  78.             this->push(temp);
  79.             //cout << temp << " ";
  80.         }
  81.  
  82.         f.close();
  83.     }
  84.  
  85.     //создание нового списка, каждый элемент которого - сумма соседей
  86.     void createNewQueu(Qeue* &newQeue)
  87.     {
  88.         QEUE_ELENENT* temp = head;
  89.         QEUE_ELENENT* prev = new QEUE_ELENENT;
  90.         if (temp->next != NULL)
  91.             newQeue->push(temp->next->info);
  92.         while (temp->next->next != NULL)
  93.         {
  94.             int result = temp->info + temp->next->next->info;
  95.             newQeue->push(result);
  96.             prev = temp;
  97.             temp = temp->next;
  98.         }
  99.         newQeue->push(prev->info + temp->next->info);
  100.         newQeue->push(temp->info);
  101.     }
  102.  
  103.     //пуста ли очередь
  104.     bool empty()
  105.     {
  106.         return head == NULL;
  107.     }
  108. };
  109.  
  110. //генерируем в файле
  111. void createFile(int size)
  112. {
  113.     ofstream f("file.txt");
  114.  
  115.     for (int i = 1; i < size; i++)
  116.         f << rand() % 10 + 1 << endl;
  117.     f << rand() % 8 + 3;
  118.     f.close();
  119. }
  120.  
  121. int main()
  122. {
  123.     setlocale(0, "rus");
  124.  
  125.     Qeue *q = new Qeue, //из файла
  126.          *newQ = new Qeue; //соседние
  127.     int size;
  128.  
  129.     cout << "Количество чисел в файле: "; cin >> size;
  130.     cout << endl;
  131.  
  132.     createFile(size);
  133.  
  134.     cout << "Список из файла: " << endl;
  135.     q->fillFromFile();
  136.     q->print();
  137.  
  138.     cout << "Список - сумма соседних: " << endl;
  139.     q->createNewQueu(newQ);
  140.     newQ->print();
  141. }
Advertisement
Add Comment
Please, Sign In to add comment