Savelyev_Vyacheslav

KursovC++

Jun 7th, 2021 (edited)
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 18.50 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <string>
  4. #include <fstream> // chtenie faila
  5. #include <stdlib.h>     //for using the function sleep
  6. #include <windows.h> // для Win32 систем
  7. #include <clocale>
  8. #include <typeinfo>
  9. #include <fstream>
  10. using namespace std;
  11.  
  12. int const feldsUniversStruct = 9;
  13. int const maxRooms = 20;
  14.  
  15. struct Hostel {
  16.     string HostelN;
  17.     string room;
  18.     string debt;
  19. };
  20.  
  21. struct  University
  22. {
  23.     string Rbook;
  24.     string name;
  25.     string surname;
  26.     string patronymic;
  27.     string faculty;
  28.     string teamN;
  29.     Hostel* HostelPtr = new Hostel();
  30.     struct University* ptr;
  31. };
  32. struct DebtObrabot {
  33.     int room;
  34.     int debt;
  35. };
  36.  
  37. //номер зачетки / фио / направление / группа / № Общаги / № комнаты /долги за общежитие
  38. // выбрать 5 комнат с макс долгом проживания
  39.  
  40. University* head;
  41. //headR = NULL;
  42. string nameFile = "write.txt";
  43. int countK = 0;
  44.  
  45. void List() { head = NULL; } // Инициализация списка
  46. int getCount() { return countK; } // Получение количества узлов списка
  47. bool isEmpty() { return head == NULL; }  // Проверка, пуст ли список
  48. void setFileName() { cout << " \nVvedite name.txt: "; cin >> nameFile; }
  49. string getValue0(University* p) { return p->Rbook; } // Получение значения  узла списка
  50. string getValue1(University* p) { return p->name; } // Получение значения узла списка patronymic
  51. string getValue2(University* p) { return p->surname; } // Получение значения узла списка
  52. string getValue3(University* p) { return p->patronymic; }
  53. string getValue4(University* p) { return p->faculty; } // Получение значения 2го узла списка
  54. string getValue5(University* p) { return p->teamN; }
  55. string getValue6(University* p) { return p->HostelPtr->HostelN; }
  56. string getValue7(University* p) { return p->HostelPtr->room; }
  57. string getValue8(University* p) { return p->HostelPtr->debt; }
  58. void SetValue(string num[]) {
  59.     cout << "Введите номер зачетной книжки:     "; cin >> num[0];
  60.     cout << "Введите имя:                       "; cin >> num[1];
  61.     cout << "Введите фамелию:                   "; cin >> num[2];
  62.     cout << "Введите отчество:                  "; cin >> num[3];
  63.     cout << "Введите направление:               "; cin >> num[4];
  64.     cout << "Введите группу:                    "; cin >> num[5];
  65.     cout << "Введите № общежития:               "; cin >> num[6];
  66.     cout << "Введите № комноты:                 "; cin >> num[7];
  67.     cout << "Введите долги:                     "; cin >> num[8];
  68. }
  69. void SetUniversity(University* elem, string num[]) {
  70.     elem->Rbook = num[0];
  71.     elem->name = num[1];
  72.     elem->surname = num[2];
  73.     elem->patronymic = num[3];
  74.     elem->faculty = num[4];
  75.     elem->teamN = num[5];
  76.     elem->HostelPtr->HostelN = num[6];
  77.     elem->HostelPtr->room = num[7];
  78.     elem->HostelPtr->debt = num[8];
  79. }
  80. University* Prev(University* nod)
  81. {
  82.     if (isEmpty()) return NULL;
  83.     if (nod == head) return NULL;
  84.     University* p = head;
  85.     while (p->ptr != nod)
  86.         p = p->ptr;
  87.     return p;
  88. }
  89. University* Next(University* university_)
  90. {
  91.     if (isEmpty()) return NULL;
  92.     return university_->ptr;
  93. }
  94.  
  95.  
  96.  
  97.     int ValidChislo(string s) {
  98.     for (auto c : s) {
  99.         if ((c <= 'z') && (c >= 'a')) {
  100.             cout << "Vi vveli text ne tuda"; return 0;
  101.         }
  102.         else if ((c <= 'Z') && (c >= 'A')) {
  103.             cout << "Vi vveli text  ne tuda"; return 0;
  104.         }
  105.         else if ((c <= 'Я') && (c >= 'А')) {
  106.             cout << "Vi vveli text  ne tuda"; return 0;
  107.         }
  108.         else if ((c <= 'я') && (c >= 'а')) {
  109.             cout << "Vi vveli text  ne tuda"; return 0;
  110.         }
  111.     }
  112.     return 1;
  113. }
  114.     int ValidText(string s) {
  115.     for (auto c : s)
  116.         if ((c <= '9') && (c >= '0')) {
  117.             cout << "Vi vveli cislo ne tuda";
  118.             return 0;
  119.         }
  120.     return 1;
  121. }
  122.     University* ChekValidALL(string num[])
  123. {  
  124.     if (!ValidChislo(num[0])) { cout << " 0-HostelN \n"; return NULL; }
  125.     if (!ValidText(num[1])) { cout << " 1-Rbook \n"; return NULL; }
  126.     if (!ValidText(num[2])) { cout << " 2-name \n"; return NULL; }
  127.     if (!ValidText(num[3])) { cout << " 3-name \n"; return NULL; }
  128.     if (!ValidText(num[4])) { cout << " 4-name \n"; return NULL; }
  129.     //if (!ValidChislo(num[5])) { cout << " 5-faculty \n"; return NULL; }
  130.     if (!ValidChislo(num[6])) { cout << " 6-HostelN \n"; return NULL; }
  131.     if (!ValidChislo(num[7])) { cout << " 7-room \n"; return NULL; }
  132.     if (!ValidChislo(num[8])) { cout << " 8-debt \n"; return NULL; }
  133. }
  134. University* Add(string num[],  University* university_ = NULL)
  135. {
  136.     //ChekValidALL(num);
  137.     University* elem = new University();
  138.     SetUniversity(elem, num);
  139.  
  140.  
  141.     //countK++;
  142.     if (university_ == NULL) // Добавление нового корня
  143.     {
  144.         if (head == NULL) {
  145.             elem->ptr = NULL;
  146.             head = elem;
  147.         }
  148.         else {
  149.             elem->ptr = head;
  150.             head = elem;
  151.         }
  152.         return elem;
  153.     }
  154.     elem->ptr = university_->ptr; // Добавление узла после текущего
  155.     university_->ptr = elem;
  156.     return elem;
  157. }
  158. University* getLast()
  159. {
  160.     University* p = head;
  161.     while (Next(p) != NULL)
  162.         p = Next(p);
  163.     return p;
  164. }
  165. void ReedOfTxtToProg(string nameFile)
  166. {
  167.     ifstream inf(nameFile);
  168.     // Если мы не можем открыть файл для чтения его содержимого,
  169.     if (!inf)
  170.     {
  171.         // то выводим следующее сообщение об ошибке и выполняем функцию exit()
  172.         cerr << nameFile << " could not be opened for reading!" << endl;
  173.         cerr << "Perezagruzi programmu" << endl;
  174.         Sleep(5000);
  175.         exit(1);
  176.     }
  177.  
  178.     //string z0, z1, z2, z3, z4, z5, z6, z7;
  179.        string z[feldsUniversStruct];
  180.     // Пока есть, что читать,
  181.     while (inf)
  182.     {
  183.  
  184.         // то перемещаем то, что можем прочитать, в строку, а затем выводим эту строку на экран
  185.         string strInput;
  186.         getline(inf, strInput);
  187.         int ci = 0;
  188.         string word = "";
  189.         int probels = 0;
  190.  
  191.         while ((strInput[ci] != NULL)) {
  192.             strInput[ci];
  193.             if (strInput[ci] != ' ') { word += strInput[ci]; }
  194.             if ((strInput[ci] == ' ') || (strInput[ci + 1] == NULL)) {
  195.                 probels++;
  196.                 switch (probels) {
  197.                 case 1:  z[0] = word;
  198.                 case 2:  z[1] = word;
  199.                 case 3:  z[2] = word;
  200.                 case 4:  z[3] = word;
  201.                 case 5:  z[4] = word;
  202.                 case 6:  z[5] = word;
  203.                 case 7:  z[6] = word;
  204.                 case 8:  z[7] = word;
  205.                 case 9:  z[8] = word;
  206.                 default: word = "";
  207.                 }
  208.             }
  209.             ci++;
  210.         }
  211.         University* s = getLast();
  212.         if (strInput != "\0") { s = Add(z, s); }
  213.     }
  214.     Sleep(500);
  215. }
  216.  
  217.  
  218.  
  219. void PrintRow(University* p)
  220. {
  221.     if (isEmpty()) { cout << "Список пуст" << endl; return; }
  222.     cout << getValue0(p)
  223.         << " " << getValue1(p)
  224.         << " " << getValue2(p)
  225.         << " " << getValue3(p)
  226.         << " " << getValue4(p)
  227.         << " " << getValue5(p)
  228.         << " " << getValue6(p)
  229.         << " " << getValue7(p)
  230.         << " " << getValue8(p)
  231.         ;
  232.         cout << endl;
  233. }
  234. void Print()
  235. {
  236.     cout << "\n";
  237.     if (isEmpty()) { cout << "Список пуст" << endl; return; }
  238.     University* p = head;
  239.     do {
  240.         PrintRow(p);
  241.         p = Next(p);
  242.     } while (p != NULL);
  243.     cout << endl;
  244.    
  245. }
  246.  
  247.  
  248.  
  249.     void headDel(University* temp)
  250. {
  251.     University* t1 = temp;
  252.     University* t2 = Next(temp);
  253.     head = t2;
  254.     t1 = NULL;
  255.     delete t1;
  256. }
  257.     void headNextDel(University* temp)
  258. {  
  259.     University* t1 = Prev(temp);
  260.     University* t2 = temp;
  261.     University* t3 = Next(temp);
  262.     t1->ptr = t3;
  263.     t2->ptr = NULL;
  264.     delete t2;
  265. }
  266.     void DeleteEnd(University* temp)
  267. {
  268.     University* t1 = Prev(temp);
  269.     University* t2 = temp;
  270.     t1->ptr = NULL;
  271.     delete t2;
  272. }
  273.     void DeletePreEnd(University* temp)
  274. {
  275.     University* t1 = Prev(temp);
  276.     University* t2 = temp;
  277.     University* t3 = Next(temp);
  278.     t1->ptr = t3; delete t2;
  279. }
  280.     void DeleteMidle(University* nod)
  281. {
  282.     University* t1 = Prev(nod); // Удаление промежуточного узла
  283.     University* t2 = nod;
  284.     University* t3 = Next(nod);
  285.     t1->ptr = t3;
  286.     t2->ptr = NULL;
  287.     delete t2;
  288. }
  289. University* delBySurname_(string valueDell) {
  290.     University* head2 = head;
  291.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  292.     University* temp = NULL;
  293.    
  294.     if (head2->surname == valueDell) { cout << "Удалить голову "; headDel(head2); return NULL; }
  295.     head2 = head2->ptr;
  296.     if (head2->surname == valueDell) { cout << "Удалить второй с головы "; headNextDel(head2); return NULL; }
  297.     head2 = head2->ptr;
  298.     int j = 0;
  299.  
  300.     while (head2->ptr->ptr != NULL) {
  301.         temp = head2;
  302.         if (temp->surname == valueDell) {
  303.             cout << "Удаление в середине\n";
  304.             DeleteMidle(temp);
  305.             return NULL;
  306.         }
  307.         head2 = head2->ptr;
  308.         j++;
  309.     }
  310.     if (head2->surname == valueDell) { cout << "Удалить второй с конца "; DeletePreEnd(head2); return NULL; }
  311.     if (head2->ptr->surname == valueDell) { cout << "Удалить первыЙ с конца "; DeleteEnd(head2->ptr); return NULL; }
  312. }
  313.  
  314.     int chekValue(University* head, University* iPtr, string s1, string s2) {
  315.  
  316.     if (iPtr == NULL) return 0;
  317.     int number1 = std::stoi(s1);
  318.     int number2 = std::stoi(s2);
  319.     if (number1 < number2) {
  320.         return 1;
  321.     }
  322.     else { return 0; }
  323. }
  324.     void Swap(University* ptr1, University* ptr2)
  325. {
  326.     if (ptr1 == NULL || ptr2 == NULL) return;
  327.     if (ptr1 == ptr2) return;
  328.  
  329.     if (ptr2->ptr == ptr1)
  330.     {
  331.         University* p = ptr1;
  332.         ptr1 = ptr2;
  333.         ptr2 = p;
  334.     }
  335.  
  336.     University* prev1 = Prev(ptr1);
  337.     University* prev2 = Prev(ptr2);
  338.     University* next1 = Next(ptr1);
  339.     University* next2 = Next(ptr2);
  340.     if (next1 == ptr2)
  341.     {
  342.         if (prev1 != NULL)
  343.             prev1->ptr = ptr2;
  344.         else
  345.             head = ptr2;
  346.         ptr2->ptr = ptr1;
  347.         ptr1->ptr = next2;
  348.         return;
  349.     }
  350.     if (prev1 != NULL)
  351.         prev1->ptr = ptr2;
  352.     else
  353.         head = ptr2;
  354.     if (prev2 != NULL)
  355.         prev2->ptr = ptr1;
  356.     else
  357.         head = ptr1;
  358.     ptr2->ptr = next1;
  359.     ptr1->ptr = next2;
  360.  
  361. }
  362.    
  363. void sortRoom() {
  364.  
  365.     University* ptr = NULL;
  366.     University* headCop = head;
  367.     int p = 0;
  368.     if (headCop->ptr == NULL) {} // В списке нет узлов
  369.     while (headCop != NULL) {
  370.         if (headCop->ptr == NULL) break;
  371.         if (headCop->name != "dolg") {
  372.         if (chekValue(headCop, headCop->ptr, headCop->HostelPtr->room, headCop->ptr->HostelPtr->room)) {
  373.             Swap(headCop, headCop->ptr);
  374.             p++;
  375.         }
  376.     }
  377.         headCop = headCop->ptr;
  378.     }
  379.     if (p != 0) {
  380.         sortRoom();
  381.     }
  382. }
  383.  
  384. University* Dobav_head()
  385. {
  386.     University* temp = NULL;
  387.     University* head2 = head;
  388.     string num[feldsUniversStruct];
  389.     SetValue(num);
  390.     ChekValidALL(num);
  391.     University* elem = new University();
  392.     SetUniversity(elem, num);
  393.     elem->ptr = head2;
  394.     head = elem;
  395.    
  396.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  397.  
  398. }
  399. University* Corr_By_value()
  400. {
  401.     University* temp = NULL;
  402.     University* head2 = head;
  403.  
  404.     string valueSearch;
  405.     cout << "Поиск по фамилии: "; cin >> valueSearch;
  406.     if (head2 == NULL) { cout << "pusto "; return NULL; } // В списке нет узло
  407.     int j = 0;
  408.     while (head2 != NULL) {
  409.         temp = head2;
  410.         if (temp->surname == valueSearch) {
  411.             cout << "Корректировка по фамилии:\n";
  412.             string num2[feldsUniversStruct];
  413.             SetValue(num2);
  414.             SetUniversity(temp, num2);
  415.             break;
  416.         }
  417.         head2 = head2->ptr;
  418.         j++;
  419.     }
  420. }
  421. University* SearchByName()
  422. {
  423.     University* temp = NULL;
  424.     University* head2 = head;
  425.  
  426.     string valueSearch;
  427.     cout << "Поиск по фамилии: "; cin >> valueSearch;
  428.     if (head2 == NULL) { cout << "pusto "; return NULL; } // В списке нет узло
  429.     int j = 0;
  430.     while (head2 != NULL) {
  431.         temp = head2;
  432.         if (temp->surname == valueSearch) {
  433.             cout << "Корректировка по фамилии:\n";
  434.             PrintRow(temp);
  435.             break;
  436.         }
  437.         head2 = head2->ptr;
  438.         j++;
  439.     }
  440. }
  441. void WriteFromProgToTxt(string path)
  442. {
  443.     //string path = "write.txt";
  444.     ofstream fout;
  445.     fout.open(path, ofstream::app);
  446.     if (!fout.is_open()) {
  447.         cout << "Ошибка открытия фаила" << endl;
  448.         Sleep(5000);
  449.     }
  450.     else {
  451.         if (isEmpty()) { cout << "Список пуст" << endl; return; }
  452.         University* p = head;
  453.         do {
  454.             fout << "\n" << getValue0(p)
  455.                 << " " << getValue1(p)
  456.                 << " " << getValue2(p)
  457.                 << " " << getValue3(p)
  458.                 << " " << getValue4(p)
  459.                 << " " << getValue5(p)
  460.                 << " " << getValue6(p)
  461.                 << " " << getValue7(p)
  462.                 << " " << getValue8(p)
  463.                 ;
  464.             p = Next(p);
  465.         } while (p != NULL);
  466.     }
  467.    
  468.     fout.close();
  469. }
  470. void DelContent(string path)
  471. {
  472.     ofstream fout;
  473.     fout.open(path, ofstream::trunc);
  474.    
  475.     fout.close();
  476. }
  477. ///////////////////
  478. void Delete_ALL()
  479. {
  480.     class University* p = head;
  481.     if (p == NULL) return;
  482.     do {
  483.         University* d = p;
  484.         p = p->ptr;
  485.         delete d;
  486.     } while (p != NULL);
  487.     head = NULL;
  488. }
  489. int CountRooms()
  490. {
  491.     sortRoom();
  492.     University* t = head;
  493.  
  494.     int i = 1;
  495.     int vsego=0;
  496.  
  497.     while (t != NULL) {
  498.         if (t->ptr == NULL) return vsego;
  499.         if (t->HostelPtr->room != t->ptr->HostelPtr->room){ i++; }
  500.         t = t->ptr;
  501.         vsego = i;
  502.     }
  503.     return vsego;
  504. }
  505.  
  506. void quicksort(DebtObrabot* mas, int first, int last)
  507. {
  508.     int mid, count1, count2;
  509.     int f = first, l = last;
  510.     mid = mas[(f + l) / 2].debt; //вычисление опорного элемента
  511.     do
  512.     {  
  513.         while (mas[f].debt > mid) f++;
  514.         while (mas[l].debt < mid) l--;
  515.         if (f <= l) //перестановка элементов
  516.         {
  517.             count1 = mas[f].debt;
  518.             mas[f].debt = mas[l].debt;
  519.             mas[l].debt = count1;
  520.  
  521.             count2 = mas[f].room;
  522.             mas[f].room = mas[l].room;
  523.             mas[l].room = count2;
  524.             f++;
  525.             l--;
  526.         }
  527.     } while (f < l);
  528.  
  529.     if (first < l) quicksort(mas, first, l);
  530.     if (f < last) quicksort(mas, f, last);
  531. }
  532. void Obrabotka() {
  533.     sortRoom();
  534.     University* t = head;
  535.     DebtObrabot ArrObrabotka[maxRooms];
  536.     int i = 0;
  537.    
  538.     string s1;
  539.     string s2;
  540.     string s3;
  541.     int number1=0;
  542.     int number2=0;
  543.     int number3 = 0;
  544.     int a = 0;
  545.     int k = 0;
  546.     while (t != NULL) {
  547.         if (t->name == "dolg") { delBySurname_("dolg"); t = t->ptr; continue; }
  548.         s1 = t->HostelPtr->room;
  549.         s3 = t->HostelPtr->debt;
  550.         number3 = std::stoi(s3);
  551.         number1 = std::stoi(s1);
  552.         if (t->ptr == NULL) {
  553.             t = t->ptr;
  554.             a = a + number3;
  555.             ArrObrabotka[i].debt = a;
  556.             ArrObrabotka[i].room = number1;
  557.             break;
  558.         }
  559.             s2 = t->ptr->HostelPtr->room;
  560.             number2 = std::stoi(s2);
  561.             a = a + number3;
  562.             t = t->ptr;
  563.             if (number1 != number2) {
  564.            
  565.             ArrObrabotka[i].debt = a;
  566.             ArrObrabotka[i].room = number1;
  567.                 a = 0;
  568.                 i++;
  569.             }
  570.     }
  571.     quicksort(ArrObrabotka, 0, maxRooms - 1);
  572.     int y = 0;
  573.     while (y < 5) {
  574.         University* head2 = head;
  575.         University* elem = new University();
  576.         elem->Rbook = "dolg";
  577.         elem->name = "dolg";
  578.         elem->surname = "dolg";
  579.         elem->patronymic = "dolg";
  580.         elem->faculty = "dolg";
  581.         elem->teamN = "dolg";
  582.         elem->HostelPtr->HostelN = "dolg";
  583.         std::string rooms = std::to_string(ArrObrabotka[y].room);
  584.         std::string debts = std::to_string(ArrObrabotka[y].debt);
  585.         rooms = "ROOM-" + rooms;
  586.         debts = "DOLG-" + debts;
  587.         elem->HostelPtr->room = rooms;
  588.         elem->HostelPtr->room = rooms;
  589.         elem->HostelPtr->debt = debts;
  590.         elem->ptr = head2;
  591.         head = elem;
  592.         //cout << "Долг-" << ArrObrabotka[y].debt << "  |  НомерКомнаты-" << ArrObrabotka[y].room << " \n";
  593.         y++;
  594.         }
  595.    
  596. }
  597.  
  598. void gotovo() {
  599.     DelContent(nameFile);
  600.     WriteFromProgToTxt(nameFile);
  601.     cout << "ГОТОВО!\n";
  602.     Delete_ALL();
  603.     ReedOfTxtToProg(nameFile);
  604.     sortRoom();
  605.     Print();
  606. }
  607. void Help()
  608. {
  609.     system("cls");
  610.     cout << "OPERAVION >>  \n";
  611.     cout << "Dobav_head-1 delBySurname_-2 Corr_By_value-3 SearchByName-4 Obrabotka-5 Delete_ALL-6 WriteFromProgToTxt-7 Exit - anyKEY \n";
  612.     cout << "setFileName-8 Print()-9 \n";
  613. }
  614. void StekOperation()
  615. {
  616.     string valueDell;
  617.     int opN;
  618.     ReedOfTxtToProg(nameFile);
  619.     Help();
  620.     //cin >> opN;
  621.     Print();
  622.     cin >> opN;
  623.     while (true)
  624.     {
  625.        
  626.        
  627.         //cin >> opN;
  628.         Help();
  629.         switch (opN) {
  630.             case 1:
  631.                 cout << "Dobav_head\n";  Dobav_head();
  632.                 break;
  633.             case 2:
  634.                 cout << "delBySurname_\n";  cout << "Поиск по фамилии: "; cin >> valueDell; delBySurname_(valueDell); gotovo();
  635.                 break;
  636.             case 3:
  637.                 cout << "Corr_By_value\n";  Corr_By_value(); gotovo();
  638.                 break;
  639.             case 4:
  640.                 cout << "SearchByName\n";  SearchByName(); gotovo();
  641.                 break;
  642.             case 5:
  643.                 cout << "Obrabotka()\n";  Obrabotka(); gotovo();
  644.                 break;
  645.             case 6:
  646.                 cout << "Delete_ALL()\n";  Delete_ALL(); cout << "Для сохранения пустого списка нажмите - 7 \n";
  647.                 break;
  648.             case 7:
  649.                 cout << "WriteFromProgToTxt;\n";  WriteFromProgToTxt(nameFile); gotovo();
  650.                 break;
  651.             case 8:
  652.                 cout << "setFileName\n"; setFileName(); gotovo();
  653.                 break;
  654.             case 9:
  655.                 cout << "Print()\n"; gotovo();
  656.                 break;
  657.         default:
  658.             cout << "Exit\n"; Delete_ALL(); goto tryAgain;
  659.         }
  660.         cin >> opN;
  661.     }
  662. tryAgain: // это лейбл
  663.     exit;
  664. }
  665.  
  666.  
  667. // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
  668. // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
  669.  
  670. int main()
  671. {
  672.     //setlocale(LC_ALL, "ru");
  673.     setlocale(LC_CTYPE, "Russian");
  674.     SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
  675.     SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
  676.     setlocale(LC_ALL, "Rus"); // Подключение русского языка
  677.     StekOperation();
  678.    
  679. }
  680. // Советы по началу работы
  681. //   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
  682. //   2. В окне Team Explorer можно подключиться к системе управления версиями.
  683. //   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
  684. //   4. В окне "Список ошибок" можно просматривать ошибки.
  685. //   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
  686. //   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
  687.  
Add Comment
Please, Sign In to add comment