Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 109

Редактирование записей структуры LIST

20.11.2014, 15:03. Показов 2136. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется структура LIST кто знает как по вводу пользователя id произвести редактирование ? допустим отредактировать id =103...


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
using namespace std;
 
struct Data         
    {
        unsigned day;       
        unsigned month;     
        unsigned year;
    };
 
struct T_student 
{
        int id ;
           char fio[40];
        char facult[20];
        unsigned  kurs;
        Data d_birth;
}; 
 
struct List
{
    T_student student;
    List *next;
};
 
class facultet
{
private:
    List *head;
public:
    facultet()
    {
    head = NULL;
        
    }
 
    void insert_before()
    {
        head=NULL;
        T_student a; 
        char c;
        cout <<"Vvedite id " ;
        cin>>a.id;
        cin.get(c);
        cout << endl <<"Enter data person\n";
        cout <<" fio ";
        cin.getline(a.fio,40);
        cout <<" facultet ";
        cin.getline(a.facult,20);
    
        cout <<" kurs ";
        cin >> a.kurs;
        
        cin.get(c);
        cout << endl <<"Enter date of birthday: \n";
        cout <<" day (1-31) ";
        cin >> a.d_birth.day;
        
        cin.get(c);
        cout <<" month (1-12)";
        cin >> a.d_birth.month;
        
        cin.get(c);
        cout <<" year ";
        cin >> a.d_birth.year;
        
        cin.get(c);
        
 
        List *node = new List;
        node->student = a;
        node->next = head;
        head = node;
            
    }


Code
1
2
3
4
5
6
7
8
9
 101          PetrovN.I.        MF   1 10.12.1992
 
 102          IvanovI.I.      FIST   3  1. 1.1994
 
 103          SidorovN.I.       MF   1 10.12.1992
 
 104          AsetrovN.I.       MF   1 10.12.1992
   
 108         TabakovN.U.        RF   2  2.12.1956
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2014, 15:03
Ответы с готовыми решениями:

Редактирование записей
Здравствуйте. Возник вопрос. Есть программа в которую нужно добавлять записи. При необходимости нужно редактировать уже добавленую запись. ...

Редактирование записей в файле
В файле содержаться записи - структуры. Мне нужно организовать редактирование содержимого этих структур(как полностью структуру, так и по...

Редактирование записей в файле
Подскажите идею редактирования записи в файле пожалуйста.

9
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 15:20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void facultet::edit(int id)
{
List* tmp = head;
while(tmp)
{
    if(tmp->student.id == id)
    {
      // делаем что надо.
      return;
    }
    else
       tmp = tmp->next;
}
}
0
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 109
20.11.2014, 15:38  [ТС]
Так можно?
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void facultet::edit(int id)
{
List* tmp = head;
while(tmp)
{
    if(tmp->student.id == id)
    {
      insert_before()// делаем что надо.
      return;
    }
    else
       tmp = tmp->next;
}
}
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 15:41
Цитата Сообщение от Valera1984 Посмотреть сообщение
Так можно?
что именно?
0
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 109
20.11.2014, 15:47  [ТС]
mss307,
могу я в строке // делаем что надо( а надо отредактировать строку)
написать функцию insert_before() так можно или нельзя?
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 15:49
Цитата Сообщение от Valera1984 Посмотреть сообщение
так можно или нельзя?
можно, только работать так, как ты хочешь вряд ли будет. ты ведь хочешь вставить элемент перед элементом с нужным id?
0
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 109
20.11.2014, 15:51  [ТС]
mss307, да хочу перед элементом
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 16:37
Valera1984, погоди, ща поправлю.

Добавлено через 44 минуты
как-то так:
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct Data
{
    unsigned day;
    unsigned month;
    unsigned year;
};
 
struct T_student
{
    T_student()
    {
        static int Counter = 5;
        id = Counter;
        fio = "fio";
        facult = "facult";
        kurs = 1;
        ++Counter;
    }
 
    int id;
    std::string fio;
    std::string facult;
    unsigned  kurs;
    Data    d_birth;
};
 
struct List
{
    List()
    {
        next = nullptr;
    }
    T_student   student;
    List*   next;
};
 
class facultet
{
private:
    List *head;
public:
    facultet()
    {
        head = nullptr;
    }
 
    void insert_before(int id)
    {
        T_student a;
        List *node = new List;
        node->student = a;
        if(nullptr == head)
        {
            head = node;
            node->next = nullptr;
        }
        else
        {
            List*   cur = head;
            List*   prev = cur;
            while(cur)
            {
                if(cur->student.id == id)
                {
                    if(cur != prev)
                    {
                        prev->next = node;
                        node->next = cur;
                    }
                    else
                    {
                        node->next = head;
                        head = node;
                    }
                    return;
                }
                else
                {
                    prev = cur;
                    cur = cur->next;
                }
            }
            prev->next = node;
        }
    }
    void    show()
    {
        List*   node = head;
        while(node)
        {
            std::cout << node->student.id << std::endl;
            node = node->next;
        }
    }
};
 
int main()
{
    facultet    fac;
    fac.insert_before(2);
    fac.insert_before(5);
    fac.insert_before(5);
    fac.insert_before(7);
    fac.insert_before(15);
    fac.show();
    return  0;
}
только ввод данных свой верни.
1
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 109
20.11.2014, 16:46  [ТС]
mss307,
Спасибо я тоже как раз вместе с тобой разобрался и сделал добавление
перед элементом
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
 void facul()
{
 
 
int id;
  cout<< "vvedite id ";
   cin>>id; 
List* tmp = head;
while(tmp)
{
    if(tmp->student.id == id)
    {
    List*k=tmp; // делаем что надо.
     T_student a; 
        char c;
        cout <<"Vvedite id " ;
        cin>>a.id;
         fin_min(a.id) ;
        cin.get(c);
        cout << endl <<"Enter data person\n";
        cout <<" fio ";
        cin.getline(a.fio,40);
        cout <<" facultet ";
        cin.getline(a.facult,20);
    
        cout <<" kurs ";
        cin >> a.kurs;
        
        cin.get(c);
        cout << endl <<"Enter date of birthday: \n";
        cout <<" day (1-31) ";
        cin >> a.d_birth.day;
        
        cin.get(c);
        cout <<" month (1-12)";
        cin >> a.d_birth.month;
        
        cin.get(c);
        cout <<" year ";
        cin >> a.d_birth.year;
        
        cin.get(c);
        
 
       
        k->student = a;
        k->next = tmp->next;
       
     return;
    }
    else
       tmp = tmp->next;
}
}
Добавлено через 2 минуты
mss307, скажи пожалуйста вот у меня структура заполняется из файла и при выводе на экран выводит два последних введенных элемента как это убрать. Что бы был один?

C++
1
2
3
4
5
6
7
8
9
10
11
 101          PetrovN.I.        MF   1 10.12.1992
 
 102          IvanovI.I.      FIST   3  1. 1.1994
 
 103          SidorovN.I.       MF   1 10.12.1992
 
 104          AsetrovN.I.       MF   1 10.12.1992
   
 108         TabakovN.U.        RF   2  2.12.1956
 
 108         TabakovN.U.        RF   2  2.12.1956
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 16:48
Цитата Сообщение от Valera1984 Посмотреть сообщение
разобрался и сделал добавление
ну, я на это надеюсь) если вдруг выяснится, что неправильно разобрался, проверь мой код.

Добавлено через 1 минуту
Valera1984, а как ты выводишь? покажи код
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2014, 16:48
Помогаю со студенческими работами здесь

ListControl редактирование столбцов у записей
есть ListControl. Вид - отчет. Есть несколько записей. Есть колонки. В колонках для каждой записи есть значение. Нужно по нажатию на...

Переход от структуры к std::list
возникла необходимость переписать часть старого кода написаного лет ...дцать назад. было typedef struct _LISTMEM { ...

Редактирование структуры по номеру записи
Короче говоря, есть структура, которая читается из текстового файла, записывается в бинарный и выводится на экран. Пользователь вводит...

Редактирование и сохранение структуры <vector>
Доброго времени суток, не могу ума приложить, как реализовать функцию для редактирования данных в &lt;vector&gt; с последующим занесением в...

Перегрузить оператор << для структуры List
В общем пытаюсь перегрузить оператор передачи в поток для структуры, но что-то видимо делаю не так. Вопрос : что? #include...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru