![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Gera |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
Для заданного варианта представления линейного списка составить и отладить программу, которая выполняет по выбору: первоначальное формирование списка, включение элемента в список, удаление элемента из списка, сортировку списка по заданному полю, печать списка и решение дополнительной задачи. Двунаправленный кольцевой список. Упорядочить список поездов в порядке убывания их номеров. Подсчитать количество поездов, отправляющихся до заданного пункта назначения. Список содержит сведения об отправлении поездов дальнего следования на железнодорожном вокзале (номер поезда, станция назначения, время отправления).
Вот текст получившейся у меня программы: #include <stdio.h> /* podkluchenie bibliotek*/Проблем у меня несколько: формируется, печатается и добавляется все вроде нормально, а вот удаляется по заданному условию по очень странному алгоритму: когда я первый раз вызываю функцию удаления, то удаляются все элементы, кроме самого близкого к 300 (см.условие), а потом ещё раз вызываю функцию удаления и тот элемент тоже удаляется; что касается сортировки и поиска с подсчетом по условию, тут вообще беда - ничего не выходит. Пожалуйста, помогите разобраться с этими проблемами, я уже столько раз пыталась что-то переделать... -------------------- Errare humanum est.
|
Алена |
![]()
Сообщение
#2
|
Гость ![]() |
Что-то у тебя накручено с программой... Я бы сделала вот так:
![]() Что неясно - спрашивай... |
Gera |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
Большое спасибо, прямо спасла меня Алена.
![]() Вот только с удалением я не очень поняла. У меня не получается удалять; там как бы рассматривается если вдруг список нулевой? Это для того чтобы удалялся и первый элемент тоже? -------------------- Errare humanum est.
|
Алена |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата У меня не получается удалять; То есть? Моя программа не удаляет?Цитата там как бы рассматривается если вдруг список нулевой? Это для того чтобы удалялся и первый элемент тоже? Естественно... Список (любой) может содержать элементы, а может их и не содержать. Поэтому если в списке придется удалить первый элемент (и в итоге получить пустой список) - это тоже должно быть доступно. |
Gera |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
То есть? Моя программа не удаляет? Да, Ален, все чудесно кроме удаления... На вызов 3 пункта никакой реакции, ну т.е. я потом печатала список, чтобы проверить, а там нет изменений. -------------------- Errare humanum est.
|
Алена |
![]()
Сообщение
#6
|
Гость ![]() |
|
Gera |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
Ой, Алена, прости, да у тебя все правильно, просто я не заметила, что там условие равно 300, я то подразумевала условие: если >300, то удалять, так вот если в тот алгоритм вместо равно поставить в условие >=, т.е.
void Del_List(int n) {то он жутко возмущается. Как тогда поступить? -------------------- Errare humanum est.
|
Алена |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата он жутко возмущается Каким образом? У меня все нормально и в случае ">=" вместо "==". Только что проверила. |
Gera |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
Мне прямо неудобно, я уже замучала наверное своей тупостью, но у меня вопрос он у тебя сразу все удаляет, которые больше 300. Вот попробуй набрать такие данные, где не один, а сразу 2 или 3 не подходят, вот он их удаляет как-то постепенно.
-------------------- Errare humanum est.
|
Алена |
![]()
Сообщение
#10
|
Гость ![]() |
А, вот ты о чем... Тогда замени старые функции на новые:
void Del_List(int n) { и void Print_List()(чтобы не выбрасывало дамп памяти - пусть лучше дает сообщение, что список пуст) |
Gera |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
Еще раз спасибо, теперь вроде все работает, надеюсь, у меня примут задачку с таким оформлением.
![]() -------------------- Errare humanum est.
|
Gera |
![]()
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
У меня новая головная боль;
![]() LIST *ptr_Beg;Кстати там две разных должно быть функции в зависимости от того перед или после вставлять или это в одной функции можно учесть? Помогите, плиз. -------------------- Errare humanum est.
|
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Gera, смотри:
![]() Что изменилось? 1. Добавлено меню (шестым пунктом) сортировка, выход перенесен на №7 2. Подкорректирована функция Insert_List, теперь она отражает тот факт, что список двухсвязный, то есть заполняется и поле prev. 3. Как вызывать вставку перед/после определенного элемента. Я сделал так: просишь ввести число, идентифицирующее позицию, в которой стоит элемент, относительно которого будет производиться вставка. Причем, если введено число отрицательное - то элемент будет вставлен перед указанным, а если положительное - то после него. То есть, если у меня уже есть список: moscow 123 12.05 , и я введу "-2" или "1" (число с плюсом, то есть положительное), то элемент добавится перед вторым (соответственно, после первого): moscow 123 12.05 , а если "2" - то после второго: moscow 123 12.05 Детально не тестировал, только на списке из трех элементов пару раз прогнал - вроде работает... Будут замечены баги - говори, исправим... |
Gera |
![]()
Сообщение
#14
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Женский Репутация: ![]() ![]() ![]() |
Спасибо, volvo, все гениальное, оказывается, просто, но до меня почему-то не доходит все время. Надеюсь, теперь примут задачу.
-------------------- Errare humanum est.
|
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 21:53 |