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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 57, средняя оценка - 4.89
cristaloleg
148 / 49 / 1
Регистрация: 21.12.2008
Сообщений: 961
#1

Struct - C++

10.07.2009, 15:49. Просмотров 6876. Ответов 3
Метки нет (Все метки)

У мя есть структура: указатель на предыдущий, следующий и значение...
Ввод/вывод работает, а вот добавление после определённого значения не пашет ....

помогите ПЛЗ...

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
#include <iostream>
using namespace std;
 
bool aray=false;
void put1();
void put2();
void out();
struct s
{
    s *prev,*next;
    int val;
};
s *sel,*top=NULL,*jop=NULL;
 
void main()
{   
    put1();           
    put2();
    out();
 
}
void put1()
{
    int k;
    cout<<"Введите значение: ";
    cin>>k;
 
    sel=new s;
    sel->val=k;
    sel->next=NULL;
    if(!aray)
    {
        //если "массив структур не создан"
        top=sel;
        jop=sel;
        sel->prev=NULL;
        aray=true;
    }
    else
    {
        //если "массив структур создан"
        sel->prev=jop;
        jop->next=sel;
        jop=sel;
    }
}
void put2()
{
    int k,i=0,y;
    cout<<"Введите эл. после которого будет вставка: ";
    cin>>k;
    for(sel=top;sel->val!=k;sel=sel->next);
    
    cout<<"Введите эл. для вставки: ";
    cin>>y;
 
    //вот тут делаю 2 буфера: в 1-й записываю вставляемое значение
    // а во 2-ой соединяю следующий(после вставляемого) и вставляемый   
 
    s *buf1,*buf2;
    buf1=new s;
    buf2=new s;
 
    //вот здесь происходит и неправильное соединение
    
    buf1->val=y;
    sel=sel->next;
    buf2->val=sel->val;
    sel=sel->prev;
    buf1->prev=sel;
    buf1->next=buf2;
    jop=buf2;
}
void del()
{
    int k;
    cout<<"Введите номер для удаления: ";
    cin>>k;
    for(sel=top;sel->val!=k;sel=sel->next);
 
    if(sel->val==k)
    {
        //sel
    }
    else
    {
        
    }
}
void out()
{
    for(sel=top;sel!=NULL;sel=sel->next)
    {
        cout<<sel->val<<"\n";
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2009, 15:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Struct (C++):

Поиск в struct - C++ Builder
Здравствуйте. Не могу разобраться как это реализовать. 1. Создать файл, содержащий сведения о спортсменах футбольной команды....

Vector и struct - C++ Builder
Добрый вечер, форумчане. Необходимо следующую структуру запихнуть в vector. struct mos { AnsiString d; AnsiString im; bool sh; ...

enum внутри struct - C++ Builder
Есть такой код: struct { enum { E1, E2, } uu; }yy; yy.uu = E1; Проблема в том, что компилятор выкидывает...

Передача struct в функцию - C++ Builder
Всех приветствую! Я что-то не понял как передать struct в функцию. Код такой: *.cpp #include &lt;vcl.h&gt; #pragma hdrstop ...

Помогите написать struct - C++ Builder
Постановка задачи. Составить программу для наблюдения за своевременной оплатой электроэнергии жильцами одного дома. Оплата должна...

Различные определения структуры (struct) - C++ Builder
Господа, вот возник у меня вопрос - зачем было понапридумано столько различных видов задания структур? struct {int x;}; struct ...

3
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
10.07.2009, 16:33 #2
а что ты хотел?
у тебя функция put1() обнуляет указатель sel->next (строка 30).
а put2() делает что-то малопонятное:
Цитата Сообщение от cristaloleg Посмотреть сообщение
sel=sel->next;
buf2->val=sel->val;
это что, обнуление sel?
а куда идет тогда обращение sel->val ????
0-> в никуда ?
0
cristaloleg
148 / 49 / 1
Регистрация: 21.12.2008
Сообщений: 961
11.07.2009, 08:56  [ТС] #3
put1() она у меня добавляет элементы по порядку, а
put2() вставляет элемент после заданного значения
0
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
11.07.2009, 09:22 #4
ПОВТОРЯЮ:

у тебя после функции put() в списке один элемент.
на него указывает top.
значение next этого элементе = NULL (строка 30 твоего кода)

при вызове put2() запрашивается искомое значение.
в лучшем случае к строке 60 твоего кода, sel будет указываеть на элемент top.
а далее, то, что я писал.
значение next этого элемента = NULL.
а ты в строке 67 делаешь sel=sel->next.
как результат, sel у тебя будет = NULL.

в строке 68 вообще будет вываливаться,
потому, что идет обращение buf2->val=sel->val, а sel, как уже сказано, =NULL.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2009, 09:22
Привет! Вот еще темы с ответами:

Аналог IndexOf для структуры struct - C++ Builder
Привет всем. Подскажите кто в курсе. Вопросик вот какой. Допустим у меня есть список TStringList *list = new TStringList(); ......

Динамический масcив с елементами типа struct - C++ Builder
вот задание: создать динамический структурный масив вывести на екран struct student{char*name; int kurs; float raiting}; потом с...

как присвоить значение переменной в struct - C++ Builder
Создаю свою переменную struct NIK { int nik; }; NIK j; Подскажите как сделать чтобы переменная nik изначально была равна 17;...

Декларация прототипа функции с параметром typedef struct - C++ Builder
Добрый вечер, господа. Создана typedef struct с несколькими полями. Создаю новую void функцию, которой должен передать структуру с...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
11.07.2009, 09:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru