Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для FOLKEN
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85

Списки, векторы и прочие

09.12.2008, 05:36. Показов 1192. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть работающая консольная прога со списками. Описана структура (данные о деталях - длинна, ширина и стоимость)
C++
1
2
3
4
5
6
7
8
struct doubler
{
    int d_Length;
    int d_Width;
    int d_Value;
    struct doubler *next; 
    struct doubler *prev; 
};
и функция добавления эл-та в конец списка
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
void add_end(int l, int w, int v, struct doubler **r)
{
    struct doubler *newr, *r1=*r;
    newr=new  doubler;
    newr->next=NULL;
    newr->d_Length=l;
    newr->d_Width=w;
    newr->d_Value=v;
//если списка не было до вызова функции
    if(*r==NULL)
    {
        *r=newr;
        newr->prev=NULL;
    }
    else
//если уже было что-то
    {
        while(r1->next!=NULL)
        r1=r1->next;
 
        r1->next=newr;
        newr->prev=r1;
        newr->next=NULL;
    }
}
Пытаюсь пересадить это дело в оконное приложение, но тут возникают проблемы.
При выполнении как-бы игнорируется уловие if(*r==NULL), дебагер показывает ошибку в строке while(r1->next!=NULL). При этом *r показывает равным 0xcdcdcdcd... Как проверить условие существования списка вообще? В консольной проге в cpp файле работало вот это
C++
1
2
    struct doubler *head;
    head=NULL;
А в оконной не получается уже на этапе компиляции. Тем более, не понятно, где делать это объявление? Я делаю глобально, так так данные в список заносятся из далога, а обработкой данных занимается функция главного окна. Если включить список в какой-либо класс, то придется писать кучу лишних функций. Сделать список классом (чем черт не шутит) тоже не получилось. Пытался таким способом задать первоначальные значения, чтобы их черт возьми проверить, но не осилил(

Пытался через векторы, но там не получилось даже сделать вектор членом класса главного окна. Тем более что с векторами я вообще впервые столкнулся, не знаю даже с какого бока к ним подобраться. И хедера <cliext/vector> у меня так и вовсе нет.. Неужто пора сишку 6.0 сдавать в утиль? Боюсь времени разбиратся в версии поновее уже нет...

Добавлено через 29 минут 16 секунд
в Dev-C++ тоже не нашлось искомого. если все совсем плохо, то хотя бы посоветуйте, какую версию Visual Studio приобрести/скачать/отобрать в темном переулке/etc.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2008, 05:36
Ответы с готовыми решениями:

Разреженная матрица и векторы (списки списков)
Нужна помощь, дали семестровые задания, мне попалось такое: Разреженные матрицы и вектора (списки списков) Поэлементное сложение и...

Что лучше: динамические массивы, векторы, списки, map контейнеры или что-то ещё?
Привет всем! Помогите правильно алгоритм выбрать. Надо получать из файлов (около 8000 файлов) значения и записать их в массивы или в...

Дан файл, элементами которого являются n-мерные векторы. Векторы с наибольшим модулем перенести в конец файла
Вот имеется подобная программа (дали как пример...... в этой программе максимальные значения из каждого вектора копируются в конец этого...

4
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
09.12.2008, 10:16
А с чего вы взяли,что там будет NULL? Обычно начальное
значение переменной(включая указатели)не предугадывается. Дебаггер заполняет память всякими там cdcdcd, есть такое дело.Обычно,на чистом СИ,пишут ф-ю вроде
Code
1
2
3
4
5
 
void InitList(List * list) {
list->next=NULL;
list->prev=NULL;
};
На С++ вопрос решается конструкторами.
0
 Аватар для FOLKEN
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
09.12.2008, 12:39  [ТС]
C++
1
2
3
4
void InitList(List * list) {
list->next=NULL;
list->prev=NULL;
}
это понятно, но коли объект в списке один, то и ссылки на следующий/предыдущий эл-ты у него NULL. а когда в списке еще нет ни одного эл-та? и как проверить есть эл-ты или нет?
0
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
09.12.2008, 16:24
FOLKEN,а ты не используй первый элемент вообще. Считай,что список начинается со второго. Т.е есть у тебя List list;
list->next - его первый элемент. Если он еще нулевой - значит его еще нет.
1
 Аватар для FOLKEN
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
09.12.2008, 16:50  [ТС]
разрази меня гром! отличная мысль!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2008, 16:50
Помогаю со студенческими работами здесь

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

Найти базисные векторы системы и выразить остальные векторы через базисные
Привет всем. Задание такое: найти базисные векторы системы и выразить остальные векторы через базисные. Вот векторы-строки: 12, 5, 0 ...

Списки, списки, списки. не все так просто
Написать функцию, которая принимает 2 списка, содержащие одинаковое число строк, затем изменяет списки сопоставляя строки, занимающие...

На рисунке под номерами 1, 3 указаны векторы скорости , а под номерами 2, 4 – векторы Умова-Пойнтинга
2.9. На рисунке под номерами 1, 3 указаны векторы скорости , а под номерами 2, 4 – векторы Умова-Пойнтинга плоской электромагнитной...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru