Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Valera1984
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 104
20.11.2014, 15:03     Редактирование записей структуры LIST #1
Имеется структура 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;
            
    }


Код
 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 15:20     Редактирование записей структуры LIST #2
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;
}
}
Valera1984
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 104
20.11.2014, 15:38  [ТС]     Редактирование записей структуры LIST #3
Так можно?
Код
void facultet::edit(int id)
{
List* tmp = head;
while(tmp)
{
    if(tmp->student.id == id)
    {
      insert_before()// делаем что надо.
      return;
    }
    else
       tmp = tmp->next;
}
}
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 15:41     Редактирование записей структуры LIST #4
Цитата Сообщение от Valera1984 Посмотреть сообщение
Так можно?
что именно?
Valera1984
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 104
20.11.2014, 15:47  [ТС]     Редактирование записей структуры LIST #5
mss307,
могу я в строке // делаем что надо( а надо отредактировать строку)
написать функцию insert_before() так можно или нельзя?
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 15:49     Редактирование записей структуры LIST #6
Цитата Сообщение от Valera1984 Посмотреть сообщение
так можно или нельзя?
можно, только работать так, как ты хочешь вряд ли будет. ты ведь хочешь вставить элемент перед элементом с нужным id?
Valera1984
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 104
20.11.2014, 15:51  [ТС]     Редактирование записей структуры LIST #7
mss307, да хочу перед элементом
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 16:37     Редактирование записей структуры LIST #8
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;
}
только ввод данных свой верни.
Valera1984
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 104
20.11.2014, 16:46  [ТС]     Редактирование записей структуры LIST #9
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 16:48     Редактирование записей структуры LIST
Еще ссылки по теме:

C++ Реализуйте интерфейс динамической структуры list для работы с объектами класса А
C++ Редактирование структуры по номеру записи
C++ Редактирование записей

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

Или воспользуйтесь поиском по форуму:
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
20.11.2014, 16:48     Редактирование записей структуры LIST #10
Цитата Сообщение от Valera1984 Посмотреть сообщение
разобрался и сделал добавление
ну, я на это надеюсь) если вдруг выяснится, что неправильно разобрался, проверь мой код.

Добавлено через 1 минуту
Valera1984, а как ты выводишь? покажи код
Yandex
Объявления
20.11.2014, 16:48     Редактирование записей структуры LIST
Ответ Создать тему
Опции темы

Текущее время: 16:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru