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

список (в программе обнуляются указатели на структуры) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить пересекаются ли окружности и найти среди них уединенные(в истории не нашел( ) http://www.cyberforum.ru/cpp-beginners/thread924932.html
Окружности задаются координатами X,Y их центров и радиусами R. Датчик случайных чисел вырабатывает характеристики N окружностей. Определить, имеются ли среди этих окружностей три попарно пересекающихся. Найти среди этих окружностей все уединенные. Добавлено через 6 минут Или киньте плиз ссылку с такой прогой))
C++ Пошаговая Детализация Как бы я сам учу пока паскаль , но вот надо сделать задание по сишке .Буду благодарен за любую подсказку . Задание : Матрицы вещественных чисел . Поменять столбцы с максимальными элементами. http://www.cyberforum.ru/cpp-beginners/thread924931.html
C++ Функция замены Builder 6
На практику в одном из пунктов задания (нужно написать текстовый редактор) нужно выполнить процедуру поиска и замены. Поиск я реализовал, не могли бы вы помочь с заменой? Мб у кого-то есть готовая функция замены в тексте? А то найти не могу информацию по замене. Спасибо.
О чем задача? C++
Не пойму некоторых начальных условий задачи. Особенно пунктов 40-43 с ветвлениями. Допустим А больше В, разница меньше 0 и выполняется комманда 4207 - заносится результат (А-В) в адресс 07. А дальше не пойму. Как проверить больше А или нет. Просто использовать "если"? Можно обратиться в ячейку 07 и вывести на экран - увидел что значение отрицательное и тогда, что-то исполняешь? Как найти макс...
C++ выделение памяти char* http://www.cyberforum.ru/cpp-beginners/thread924914.html
Подскажите пожалуйста как реализовать следующее: Человек вводит что-то с клавиатуры (строку и т.п.) И когда ему надоедает - нажимает enter - этим и завершает ввод строки. Проблема в следующем - нужно всё сделать своими функциями. Подскажите пожалуйста как примерно это реализовать? Я думал делать что-то типа: ввод одной буквы
C++ Русский и строки вот есть такой кусок кода, сравнивающий строки: while(getline(user_state, buffer)){ cout << "\n" << buffer; pos = buffer.find(your_msg); if(pos != -1) { for(int i = 0; i < buffer.size(); i++){ if(buffer == '=') {pos = i; break;} } buffer = buffer.substr(pos+1); cout <<... подробнее

Показать сообщение отдельно
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 08:49     список (в программе обнуляются указатели на структуры)
Если через указатели на указатели:
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
#include<iostream>
using namespace std;
 
struct myst
{
    char name[10];
    int money;
    myst *next;
};
 
void print(myst *list)
{
    if(list==0)
        cout<<"not in the list of elements"<<endl;
    else
        while(list)
        {
            cout<<list->name<<endl
                <<list->money<<endl;
            list=list->next;
        }
}
 
void create_input(myst **list)
{
    *list=new myst;
    (*list)->next=0;
    cout<<"Enter the name and the amount of money"<<endl;
    cin>>(*list)->name>>(*list)->money;
}
 
void create_list(myst **list,myst **beg,myst **end)
{
    create_input(list);
    *beg=*end=*list;
    print(*beg);
}
 
void first_list(myst **list,myst **beg,myst **end)
{
    create_input(list);
    (*list)->next=*beg;
    *beg=0;
    *beg=*list;
    print(*beg);
}
 
void last_list(myst **list,myst **beg,myst **end)
{
    create_input(list);
    (*end)->next=*list;
    *end=0;
    *end=*list;
    print(*beg);
}
 
int main()
{
    int n;
    char c=0;
    myst *list=0,*beg=0,*end=0;
    while(c!='0')
    {
        cout<<"press the action key"<<endl
        <<"exit '0'"<<endl
        <<"create a list '1'"<<endl
        <<"add an item to the top of the list '2'"<<endl
        <<"add an element to the end of the list '3'"<<endl;
        cin>>c;
        switch(c)
        {
        case '0':cout<<"the program is completed"<<endl;
            break;
        case '1':create_list(&list,&beg,&end);
            break;
        case '2':first_list(&list,&beg,&end);
            break;
        case '3':last_list(&list,&beg,&end);
            break;
        case '4':;
        default: cout<<"mistake! Select a valid action"<<endl;
        }
    }
    return 0;
}
Добавлено через 38 минут
Перед созданием новго списка, нужно освобождать память под старым:
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
#include<iostream>
#include<cstdlib>
using namespace std;
 
struct myst
{
    char name[10];
    int money;
    myst *next;
};
 
void print(myst *list)
{
    if(list==0)
        cout<<"not in the list of elements"<<endl;
    else
        while(list)
        {
            cout<<list->name<<endl
                <<list->money<<endl;
            list=list->next;
        }
}
 
void delete_list(myst **list,myst **beg,myst **end)
{
    myst *temp = *list;
    while (*list)
    {
        temp = (*list) ->next;
        delete *list;
        *list = temp;
    }
    *list = *beg = *end = 0;
}
 
void create_input(myst **list)
{
    *list=new myst;
    (*list)->next=0;
    cout<<"Enter the name and the amount of money"<<endl;
    cin>>(*list)->name>>(*list)->money;
}
 
void create_list(myst **list,myst **beg,myst **end)
{
    if (*list != 0) delete_list(list, beg, end);
    create_input(list);
    *beg=*end=*list;
    print(*beg);
}
 
void first_list(myst **list,myst **beg,myst **end)
{
    create_input(list);
    (*list)->next=*beg;
    *beg=0;
    *beg=*list;
    print(*beg);
}
 
void last_list(myst **list,myst **beg,myst **end)
{
    create_input(list);
    (*end)->next=*list;
    *end=0;
    *end=*list;
    print(*beg);
}
 
int main()
{
    int n;
    char c=0;
    myst *list=0,*beg=0,*end=0;
    while(c!='0')
    {
        cout<<"press the action key"<<endl
        <<"exit '0'"<<endl
        <<"create a list '1'"<<endl
        <<"add an item to the top of the list '2'"<<endl
        <<"add an element to the end of the list '3'"<<endl;
        cin>>c;
        switch(c)
        {
        case '0':cout<<"the program is completed"<<endl;
            break;
        case '1':create_list(&list,&beg,&end);
            break;
        case '2':first_list(&list,&beg,&end);
            break;
        case '3':last_list(&list,&beg,&end);
            break;
        case '4':;
        default: cout<<"mistake! Select a valid action"<<endl;
        }
    }
    
    delete_list(&list,&beg,&end);
    
    system("pause");
    return 0;
}
 
Текущее время: 09:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru