Advertisement
VladimirKostovsky

Лаба 2. Прошу, убей меня.

Mar 24th, 2022
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5. int number;
  6. struct list3 {int el; list3  *next;} *S;
  7. struct dline { list3  *beg, *end ; } *M;
  8.  
  9.  
  10. void Read(list3* S) // функция формирования списка
  11. {
  12.     list3* t;
  13.     t = S;
  14.    
  15.     dline* l;
  16.     l = M;
  17.  
  18.     ifstream F;
  19.     F.open("input.txt");
  20.  
  21.     if (!F.is_open())
  22.     {
  23.         cout << "Ошибка откытия файла" << endl;
  24.     }
  25.     else {
  26.         cout << "Файл открыт" << endl;
  27.  
  28.         while (!F.eof())
  29.         {
  30.             F >> number; // заглавное звено
  31.             l->beg;
  32.             // обозначаем и сдвигаем beg (да ничерта он не начальный)
  33.             t->next = new list3; // оно смеется надо мной
  34.             t = t->next;
  35.             t->el = number;
  36.         }
  37.  
  38.         t->next = new list3;
  39.         t = t->next;
  40.         l->end; // обозначаем позицию end (А КУДА)
  41.         t->el = number;
  42.         t->next = NULL;
  43.     }
  44.     F.close();
  45. }
  46.  
  47.  
  48. int pushdline (dline *t, int el) // пушим
  49. // t - херь, которая пробегает по списку
  50. // beg - начальный элемент
  51. // end - конечная
  52. {list3 *r;
  53.   r = new  list3;  r->el = el;  r->next = NULL; // он по новой это делаеТ?? Плевать, список уже создан.
  54.   if (t->beg == NULL)  t->end = t->beg = r;       // добавление в пустую очередь
  55.   //Segmentation fault
  56.      else { t->end->next = r; t->end = r;}
  57. }
  58.  
  59. int  popdline (dline *t, int *el) // удоляем
  60. { list3 *r;
  61.    if (t->beg == NULL)  
  62.         {return 0; cout << "Чел, очередь пуста" << endl;}         //очередь пуста
  63.   *el = t->beg-> el;  r = t->beg;
  64.   t->beg = t->beg->next;
  65.      delete r;
  66. return 1;
  67. }
  68.  
  69.  void Print(list3* S)
  70. {
  71.     ofstream fout("output.txt", ios_base::app);
  72.     list3* t;
  73.     for (t = S->next; t->next != NULL; t = t->next)
  74.     {
  75.         fout << t->el << " ";
  76.     }
  77.     fout << endl;
  78. }
  79.  
  80.  int main() {
  81.     S = new list3;
  82.     Read(S);
  83.     Print(S);
  84.     pushdline (M, 42);
  85.     popdline (M, 0);
  86.     Print(S);
  87.  
  88.  }
  89.  
  90.  /*
  91. Основная проблема - не читается оператор t, то есть я не понимаю, что в него вкладывать.
  92. По сути он должен прогонять весь созданный список и смотреть в нем указатели beg и end.
  93. НО ОН ВЫДАЕТ ПЕРЕПОЛНЕНИЕ СПИСКА, видимо не захватывает эти указатели.
  94. Функции взял из методички. В них самих проблем нет.
  95. Функцию чтения//ввода взял из прошлой лабы.
  96. Марк, хелпани.
  97. Надо как-то после создания объявить расположение этих указателей, чтобы потом на них сослаться.
  98.  */
  99.  
  100. /*
  101. Вторая часть задания - это создание деки
  102. Следовательно создание деки решит проблему буквы А, и сделает код более гибким.
  103. Нужно лишь поменять направление движения динамического списка.
  104.  
  105. Написания нужной нам деки не нашел, придется брать пример из лекции 1_2.
  106. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement