0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32
1

Структура с именем "Aeroflot"

19.09.2014, 12:18. Показов 1643. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет. Вот ТЗ: Создать базу данных, хранящуюся в линейном списке (при сортировке элементов в списке необходимо менять не содержимое элементов, а голову и указатели на следующий элемент), которая позволяет вводить информацию, хранить её в файле, осуществлять поиск, модификацию, сортировку и удаление данных. Структура с именем AEROFLOT, содержит следующие поля:
• название пункта назначения рейса;
• номер рейса;
• тип самолёта.
Найти рейсы, вылетающие в пункт назначения, название которого совпало с названием, введённым с клавиатуры.

В данной программе есть небольшие недоработки, но в целом она функционирует. Для меня не понятно назначение struct node. И собственно главная проблем- как избавиться от конструкторов. Помоги, пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
 
using namespace std;
 
struct AEROFLOT
{
    string destination;     // пункт назначения
    int number;             // номер рейса
    string type;        // тип самолета
};
 
struct node
{
    // информационная часть
    AEROFLOT data;
    node *next;
 
    // конструктор без параметров узла инициализирует текущий элемент ( хвост списка пустой )
    node() : next(0) {}
    // то же самое, только информационная часть узла задана
    node(AEROFLOT elem) : data(elem), next(0) {}
};
 
// добавление в конец
node* push_back(node *head, AEROFLOT elem)
{
    node *ptr = new node(elem);
    // если список пуст, то создадим в его голове новый узел с инициализацией заданным
    if (head == 0)
        head = ptr;
    else
    {
        // если не пуст, то передвигаемся по списку до последнего элемента
        // и ссылаемся хвостом на новый элемент
        node *temp = head;
        while (temp->next)
            temp = temp->next;
        temp->next = ptr;
    }
    return head;
}
 
// печать списка
void print(node *head)
{
    node *ptr = head;
 
    while (ptr)
    {
        cout << ptr->data.destination << " " << ptr->data.number << " " << ptr->data.type << endl;
        ptr = ptr->next;
    }
}
 
// поиск
bool find(node *head, string destination)
{
    node *ptr = head;
    // аналогично печати, только не печатаем, а проверяем на соответствие требованию текущий элемент
    // если нашли, вернули истину
    while (ptr)
    {
        if (ptr->data.destination == destination)
            return 1;
        ptr = ptr->next;
    }
    // если дошли до конца, то нужного элемента нет, вернули лож
    return 0;
}
 
node* deleted(node *list0, int n)
{
    node *pointer = list0, *pnt = new node;
 
    while (pointer)
    {
        if (pointer->data.number == n)
        {
            if (pointer == list0)
            {
                list0 = list0->next;
                delete pointer;
                pointer = list0;
            }
            else
            {
                pnt->next = pointer->next;
                delete pointer;
                pointer = pnt->next;
            }
        }
        else
        {
            pnt = pointer;
            pointer = pointer->next;
        }
    }
    return list0;
}
 
node* sort(node *head)
{
    // вспомогательный элемент для вставки
    node dumy_node;
    // указатель на голову списка
    node *cur_node = head;
 
    // пока двигаемся по списку
    while (cur_node)
    {
        // запоминаем указатель на следующий элемент
        node *insert_cur_pos = dumy_node.next;
        node *insert_pre_pos = NULL;
 
        // двигаемся к хвосту от текущего указателя
        while (insert_cur_pos)
        {
            // если текущий элемент больше того, от которого начали движение, выходим из внутреннего цикла
            if (insert_cur_pos->data.number > cur_node->data.number)
                break;
 
            // обмен указателями, некое передвижение от запомненного до того, на котором выполнилось условие >
            insert_pre_pos = insert_cur_pos;
            insert_cur_pos = insert_cur_pos->next;
        }
        // если тот указатель не пустой, сохраняем адрес вспомогательного
        if (!insert_pre_pos)
            insert_pre_pos = &dumy_node;
 
        // сохраняем указатель на следующий от текущего
        node *temp_node = cur_node->next;
 
        // меняем местами указатели
        cur_node->next = insert_pre_pos->next;
        insert_pre_pos->next = cur_node;
        cur_node = temp_node;
    }
    // возвращаем указатель на место начала списка
    return dumy_node.next;
}
 
// печать списка в файл
void toFile(node *head)
{
    fstream record;
 
    // открываем файл на запись
    //ofstream out(fileName);
    node *ptr = head;
 
    record.open("C:\\Users\\record.txt", ios_base::out);
    // идем по списку
    while (ptr)
    {
        // печатаем в файл его содержимое узлов
        record << ptr->data.destination << " " << ptr->data.number << " " << ptr->data.type << endl;
        // передвигаемся дальше
        ptr = ptr->next;
    }
    // закрываем файл
    record.close();
}
 
// модификация узла
node* modifyDestByNumber(node *head, int number)
{
    node *ptr = head;
    // точно так же, как и поиск, только при нахождении узла изменяем его пункт назначения
    //  и выходим из метода
    while (ptr)
    {
        if (ptr->data.number == number)
        {
            std::string newDest;
            std::cout << "New destination: ";
            std::cin >> newDest;
            ptr->data.destination = newDest;
            break;
        }
        // передвигаемся дальше
        ptr = ptr->next;
    }
    return head;
}
 
// ввод данных по структуре
void inputData(AEROFLOT &data)
{
    cout << "Пункт назначения: "; cin >> data.destination;
    cout << "Номер:      "; cin >> data.number;
    cout << "Тип:        "; cin >> data.type;
}
 
void menu()
{
    cout << "\n=================================" << endl;
    cout << "1) Добавить данные;" << endl;
    cout << "2) Найти данные;" << endl;
    cout << "3) Удалить данные;" << endl;
    cout << "4) Изменить данные;" << endl;
    cout << "5) Печать данных;" << endl;
    cout << "6) Печать данных в файл;" << endl;
    cout << "7) Сортировать данные;" << endl;
    cout << "0) Выход;" << endl;
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    // наш список
    node *list = 0;
    // символ выбора пункта меню
    char choice;
 
    do
    {
        menu();
        cout << "Выбор функции: ";
        cin >> choice;
 
        switch (choice)     {
        case '1': {
                      AEROFLOT data;
                      inputData(data);
                      list = push_back(list, data);
        } break;
        case '2': {
                      string destination;
                      AEROFLOT data;
                      cout << "Введите пункт назначения: ";
                      cin >> destination;
                      if (find(list, destination)){
                          cout << data.number;
                      }
        } break;
        case '3': {
                      int number;
                      cout << "Введите номер для удаления: ";
                      cin >> number;
                      list = deleted(list, number);
        } break;
        case '4': {
                      int number;
                      cout << "Введите номер для изменения ";
                      cin >> number;
                      list = modifyDestByNumber(list, number);
        } break;
        case '5': {
                      print(list);
        } break;
        case '6': {
                      toFile(list);
                      cout << "Данные записаны в файл record";
        } break;
        case '7': {
                      list = sort(list);
                      cout << "Отсортировано!" << std::endl;
        } break;
        }
    } while (choice != '0');
 
    return 0;
}
0
Лучшие ответы (1)
19.09.2014, 12:18
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.09.2014, 12:18
Ответы с готовыми решениями:

Описать структуру с именем Aeroflot
Описать структуру с именем AEROFLOT, содержащую следующие поля: - название пункта назначения рейса; - номер рейса; - тип самолета. ...

Описать структуру с именем AEROFLOT
Ребята помогите решить задачу для лабы....:cry: Описать структуру с именем AER0FL0T, содержащую следующие поля: • название...

Описать структуру с именем AEROFLOT
Описать структуру с именем AEROFLOT, содержащую следующие поля: □ название пункта назначения рейса; □ номер рейса; ...

10
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
19.09.2014, 12:34 2
greg177, node и есть тот самый элемент списка (data - информация, next - указатель на следющий элемент). Можете убрать конструкторы, но тогда придется после выделения памяти ручками забивать значения полей
0
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32
19.09.2014, 12:36  [ТС] 3
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Можете убрать конструкторы, но тогда придется после выделения памяти ручками забивать значения полей
Подскажите как, пожалуйста
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
19.09.2014, 12:40 4
greg177, выделяете вот это и
// конструктор без параметров узла инициализирует текущий элемент ( хвост списка пустой )
node() : next(0) {}
// то же самое, только информационная часть узла задана
node(AEROFLOT elem) : data(elem), next(0) {}
удаляете. А потом смотрите в коде, где эти конструкторы использовались, и там ручками прописываете забивание данных в поле data. А вот такое
C++
1
node *ptr = new node(elem);
правите на
C++
1
node *ptr = new node;
логика, думаю, понятна?
0
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32
19.09.2014, 13:17  [ТС] 5
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
ручками прописываете забивание данных в поле data
Приведите пример, пожалуйста
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
19.09.2014, 13:36 6
Лучший ответ Сообщение было отмечено greg177 как решение

Решение

greg177, пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// добавление в конец
node* push_back(node *head, AEROFLOT elem)
{
    node *ptr = new node;
    ptr->data = elem;
    ptr->next = NULL;
    // если список пуст, то создадим в его голове новый узел с инициализацией заданным
    if (head == 0)
        head = ptr;
    else
    {
        // если не пуст, то передвигаемся по списку до последнего элемента
        // и ссылаемся хвостом на новый элемент
        node *temp = head;
        while (temp->next)
            temp = temp->next;
        temp->next = ptr;
    }
    return head;
}
0
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32
20.09.2014, 16:34  [ТС] 7
Ну вот собственно избавился от конструктора.
Осталось подшаманить сортировку и проверку входных данных добавить.
Кстати, что надо использовать для того, что бы при вводе пункт назначения через пробел, не начинался бесконечный цикл?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
 
using namespace std;
 
// тип узла списка
struct AEROFLOT{
    string destination;         // пункт назначения
    int number;                 // номер рейса
    string type;                // тип самолета
};
 
// узел списка
struct node
{
    // информационная часть
    AEROFLOT data;
    // указатель на следующий элемент
    node *next;
};
 
// добавление в конец
node* push_back(node *head, AEROFLOT elem)
{
    node *ptr = new node;
    ptr->next = 0;
    ptr->data = elem;
    // если списко пуст, то создадим в его голое новый узел с инициализацией заданным
    if (head == 0)
        head = ptr;
    else
    {
        // если не пуст, то передвигаемся по смписку до последнего элемента
        // и ссылаемся хвостом на новый элемент
        node *temp = head;
        while (temp->next)
            temp = temp->next;
        temp->next = ptr;
    }
    return head;
}
 
// печать списка
void print(node *head)
{
    node *ptr = head;
    // идем по всему списку и печатаем текущий элемент
    while (ptr)
    {
        cout << ptr->data.destination << " " << ptr->data.number << " " << ptr->data.type << endl;
        ptr = ptr->next;
    }
}
 
// поиск
int find(node *head, string dest)
{
    node *ptr = head;
    // аналогично печати, только не печатаем, а проверяем на соответствие требованию текущий элемент
    // если нашли, вернули истину
    while (ptr)
    {
        if (ptr->data.destination == dest)
            return ptr->data.number;
        ptr = ptr->next;
    }
    // если дошли до конца, то нужного элемента нет, вернули ложь
    return -1;
}
 
node* deleted(node *list0, int n)
{
    node *pointer = list0, *pnt = new node;
 
    while (pointer)
    {
        if (pointer->data.number == n)  // если текущий элемент равен нужному, то
        {
            if (pointer == list0)       // если это начало списка
            {
                // если это начало списка, то сохраняем указатель на голову
                // делаем головой списка следующий элемент
                // и удаляем указатель на начальную голову списка
                // выходим из функции с истинным значением
                list0 = list0->next;
                delete pointer;
                pointer = list0;
            }
            else    // если не начало списка
            {
                pnt->next = pointer->next;  // перемещаем указатель на следующий эелмент
                delete pointer;     // удаляем нужный
                pointer = pnt->next;    // восстанавливаем замененный элемент на его место    
            }
        }
        else    // если теукщий элемент не нужный, то
        {   // передвигаемся дальше с запоминанием предыдущего
            pnt = pointer;
            pointer = pointer->next;
        }
    }
    return list0;
}
 
// сортировка списка                        исправить
node* sort(node *head)
{
    // всопогательный элемент для вставки
    node dumy_node;
    // указатель на голову списка
    node *temp = head;
 
    // пока двигаемся по списку
    while (temp)
    {
        // запоминаем указатель на следующий элемент
        node *insert_cur_pos = dumy_node.next;
        node *insert_pre_pos = NULL;
 
        // двигаемся к хвосту от текущего указателя
        while (insert_cur_pos)
        {
            // если теукщий элемент больше того, от которого начали движение, выходим из внутреннего цикла
            if (insert_cur_pos->data.number > temp->data.number)
                break;
 
            // побмен указателями, некое передвижение от запомненного до того, на котором выполнилось условие >
            insert_pre_pos = insert_cur_pos;
            insert_cur_pos = insert_cur_pos->next;
        }
        // если тот указатель не пустой, сохраняем адрес вспомогательного
        if (!insert_pre_pos)
            insert_pre_pos = &dumy_node;
 
        // сохраняем указатель на следующий от теукщего
        node *temp_node = temp->next;
 
        // меняем местами укзатели
        temp->next = insert_pre_pos->next;
        insert_pre_pos->next = temp;
        temp = temp_node;
    }
    return dumy_node.next;
}
 
// печать списка в файл
void toFile(node *head)
{
    fstream record;
    node *ptr = head;
 
    record.open("C:\\Users\\777\\Desktop\\Курсач\\Курсач\\record.txt", ios_base::out);
    while (ptr)
    {
        record << ptr->data.destination << " " << ptr->data.number << " " << ptr->data.type << endl;
        // передвигаемся дальше
        ptr = ptr->next;
    }
    record.close();
}
 
// модификация узла                          добавить проверку на наличие такого рейса
node* modify(node *head, int number)
{
    node *ptr = head;
    // точно так же, как и поиск, только при нахождении узла изменяем его пункт назначения
    //  и выходим из метода
    while (ptr)
    {
        if (ptr->data.number == number)
        {
            string newDest;
            cout << "New destination: ";
            cin >> newDest;
            ptr->data.destination = newDest;
            break;
        }
        // передвигаемся дальше
        ptr = ptr->next;
    }
    return head;
}
 
// ввод данных по структуре                    ввод пункт назначения через пробел
void inputData(AEROFLOT &data)
{
    cout << "Пункт назначения: "; cin >> data.destination;
    cout << "Номер рейса:      "; cin >> data.number;
    cout << "Тип самолета:     "; cin >> data.type;
}
 
// меню
void menu()
{
    cout << "\n=================================" << endl;
    cout << "1) Добавить данные;" << endl;
    cout << "2) Найти данные;" << endl;
    cout << "3) Удалить данные;" << endl;
    cout << "4) Изменить данные;" << endl;
    cout << "5) Печать данных;" << endl;
    cout << "6) Печать данных в файл;" << endl;
    cout << "7) Сортировать данные;" << endl;
    cout << "0) Выход;" << endl;
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    // наш список
    node *list = 0;
 
    char choice;
 
    do
    {
        menu();
        cout << "Выберите операцию  : ";
        cin >> choice;
 
        switch (choice)
        {
        case '1': {
                      AEROFLOT data;
                      inputData(data);
                      list = push_back(list, data);
        } break;
        case '2': {
                      string dest;
                      cout << "Введите пункт назначения: ";
                      cin >> dest;
                      int number = find(list, dest);
                      if (number == -1)
                          cout << "Такой пункт назначения не найден!" << endl;
                      else
                          cout << "Номер рейса: " << number << endl;
        } break;
        case '3': {
                      int number;
                      cout << "Введите номер рейса, который хотите удалить: ";
                      cin >> number;
                      list = deleted(list, number);
        } break;
        case '4': {
                      int number;
                      cout << "Введите номер рейса, для изменения: ";
                      cin >> number;
 
                      list = modify(list, number);
        } break;
        case '5': {
                      print(list);
        } break;
        case '6': {
                      toFile(list);
                      cout << "Данные записаны в файл record";
        } break;
        case '7': {
                      list = sort(list);
                      std::cout << "Отсортированно!" << std::endl;
        } break;
        }
    } while (choice != '0');
 
    return 0;
}
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
21.09.2014, 11:32 8
greg177, насколько я помню, можно воспользоваться функцией getline
0
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32
21.09.2014, 16:25  [ТС] 9
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
можно воспользоваться функцией getline
Вот таким образом?
C++
1
getline(cin, data.destination, ' ');
Если так, то все-равно происходит зацикливание
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
21.09.2014, 21:10 10
greg177, попробуйте еще очищать текстовый поток перед считыванием. Если честно, я уже не помню, Qt-шный readLine() работает без проблем
0
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32
04.12.2014, 19:39  [ТС] 11
Подскажите еще, как обработать ситуацию, когда добавляется уже существующий номер рейса.
0
04.12.2014, 19:39
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2014, 19:39
Помогаю со студенческими работами здесь

Описать структуру с именем AEROFLOT
Описать структуру с именем AEROFLOT, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета.

Определить класс с именем Aeroflot
Задание: 1) Определить класс с именем AEROFLOT, содержащий следующие поля: а) Название пункта назначения рейса; б) номер рейса; в) тип...

Описать структуру с именем AEROFLOT
Вариант 4 1. Описать структуру с именем АЕRОFLОТ, содержащую следующие поля: • NAZN - название пункта назначения рейса; • NUMR -...

Описать структуру с именем Aeroflot
1. Описать структуру с именем AEROFLOT, содержащую следующие поля: номер рейса+; название пункта вылета; название пункта...

Описать структуру с именем AEROFLOT
Приветик всем! Помогите пожалуйста! Надо переделать программу на Си. Ниже написана подобная программа, но некоторое надо изменить: записи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Отключение отслеживания файла, занесенного в .gitignore в Git
hw_wired 10.02.2025
Git помогает следить за изменениями в проекте, но иногда требуется исключить определенные файлы из системы контроля версий. Это могут быть конфигурационные файлы с локальными настройками, временные. . .
Что такое use strict в JavaScript
hw_wired 10.02.2025
Директива use strict - способ перевода JavaScript-кода в строгий режим работы, который делает язык более безопасным и предсказуемым. Она появилась в ECMAScript 5 как ответ на многочисленные проблемы,. . .
Как в jQuery проверить, что элемент скрыт
hw_wired 10.02.2025
jQuery предоставляет несколько эффективных способов определить, скрыт элемент или отображается на странице. Самый простой метод использует специальные селекторы :hidden и :visible. Селектор :hidden. . .
Как проверить (check out) ветку Git в удаленном репозитории
hw_wired 10.02.2025
Проверка удаленной ветки в Git требует понимания нескольких базовых концепций и точного выполнения определенной последовательности действий. Для начала необходимо получить актуальную информацию о. . .
chucknorris в HTML и другие обозначения цветов
hw_wired 10.02.2025
HTML, как основной язык разметки веб-страниц, прошел длинный путь развития в плане работы с цветами. На заре развития веб-технологий разработчики могли использовать только базовый набор из 16. . .
Стек и куча: отличия и назначение
hw_wired 10.02.2025
Управление памятью - ключевой элемент работы любой программы. В современных языках программирования память делится на две основные области: стек и кучу. Каждая из них обладает уникальными. . .
Комментарии в JSON
hw_wired 10.02.2025
JSON - текстовый формат обмена данными, построенный на основе синтаксиса JavaScript. Этот формат отличается простотой, читаемостью и широкой поддержкой во всех современных языках программирования. . . .
Перезаписываем локальные файлы с помощью git pull
hw_wired 10.02.2025
Git pull - незаменимая команда для синхронизации локального репозитория с удаленным. При работе над проектом в команде разработчиков часто возникает необходимость получить актуальные изменения,. . .
Оператор --> в C++
hw_wired 10.02.2025
Оператор --> (называемый "spaceship operator" или оператор космического корабля) - важное нововведение в стандарте C++20, упрощающее реализацию операций сравнения в пользовательских типах данных. . . .
Отмена git add до коммита
hw_wired 10.02.2025
Git предлагает несколько методов для отмены индексации файлов перед созданием коммита. Разработчики часто сталкиваются с ситуацией, когда нужно убрать файлы из индекса, не теряя внесенные изменения в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru