|
1 / 1 / 1
Регистрация: 09.11.2012
Сообщений: 82
|
|||||||||||
Двусвязный список23.09.2013, 00:46. Показов 1803. Ответов 11
Метки нет (Все метки)
Здравствуйте.
Задание такое: Разработать и отладить программу. Предусмотреть: - ввод данных из файла - вывод результатов на экран в виде таблицы Список школ имеет следующую структуру: номер школы – район - количество учеников начальных классов - количество учеников среднего звена – количество старшеклассников - общее количество учеников. При вводе рассчитайте общее количество учеников и выведите информацию о школах в виде таблицы. 1) Вывести номера школ и район, в которых учеников начальных классов минимально (таких может быть несколько). 2) Вывести всю информацию о школах заданного района (название района ввести с клавиатуры). 3) Выполнить сортировку списка по общему количеству учеников, вывести отсортированный список _______ Пока есть только наброски. Класс и иже с ним: Кликните здесь для просмотра всего текста
Сочинила форму и начала её оживлять: Кликните здесь для просмотра всего текста
Компилируется пока нормально. Но при попытке протестировать кнопку "Добавить в список" вылазит окошко (прилагается). Что может быть не так? Ввод из файла и собственно задания пока реализовывать и не пыталась. Понимаю, что в коде очень много недочётов, поэтому прошу совета относительно решения. Буду благодарна за любую конструктивную критику и рацпредложения.
0
|
|||||||||||
| 23.09.2013, 00:46 | |
|
Ответы с готовыми решениями:
11
Двусвязный список. сортировка пузырьком. Двусвязный список: создание, добавление элементов в конец списка, поиск по значению информационного поля макси Переделать двусвязный список в двусвязный кольцевой |
|
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
|
|
| 23.09.2013, 07:00 | |
|
Locust, ругается он на то, что значение "" не является целым. Скорей всего, какое-нибудь поле, где должно быть число оставляешь пустым и программа выдаёт ошибку. Или заполняешь не теми данными. По хорошему необходимо делать проверку того, что вводишь в текстовых полях или устанавливать в свойствах стиль, который будет ограничивать ввод (например только цифры).
2
|
|
|
1 / 1 / 1
Регистрация: 09.11.2012
Сообщений: 82
|
||||||
| 24.09.2013, 23:03 [ТС] | ||||||
|
Снова я. С новыми вопросами.
Начала думать над первым заданием, написала пока вот что:
0
|
||||||
|
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
|
||||||||||||||||||||||||||
| 25.09.2013, 12:39 | ||||||||||||||||||||||||||
|
Locust, во-первых, такое условие выхода из цикла
Добавлено через 5 часов 33 минуты Кроме того. В классе списка необходимо все переменные описать в секции private и обращаться к ним из программы через соответствующие методы. Поясню. countElem объявлена в секции public. Соответственно в программе можно написать, например,
Если всё же нужно получать их значения, то необходимо создать функции, которые будут возвращать нужные значения. Например для количества элементов списка:
1
|
||||||||||||||||||||||||||
|
1 / 1 / 1
Регистрация: 09.11.2012
Сообщений: 82
|
|||||||||||
| 29.09.2013, 22:59 [ТС] | |||||||||||
|
Хочу, чтобы во втором задании данные о каждой новой школе района, указанного в Edit, добавлялись в message.
Последний элемент списка не воспринимает. Где я накосячила?
Попробовала написать ещё что-то типа сортировки списка пузырём к третьему заданию. Для вывода отсортированного списка StringGrid должен очищаться, а потом туда загоняются данные из обновлённого списка. Во-первых, очень медленно. Три элемента "отсортировал" секунд за пять (может, из-за того, что машина слабая), на четырёх уже подвис. Ну, раз пузырьком, то так, по идее, и должно быть, но скорее всего, это я где-то напортачила. Как быстрее всего список можно отсортировать? Во-вторых, вернусь к трём "типа отсортированным" элементам: наименьший элемент, который изначально был в начале, просто продублировался в конце, заменив средний по размеру элемент, стоявший там изначально. Ошибка в самой сортировке или в выводе?
0
|
|||||||||||
|
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
|
|||||||||||||||||||||
| 01.10.2013, 07:15 | |||||||||||||||||||||
|
Попробуй вместо этого
По сортировке. Что-то не похоже у тебя это на пузырьковую сортировку. В пузырьковой сортировке должно быть два вложенных друг в друга цикла. Вот посмотри алгоритмы сортировок. У тебя просто не должно упорядочится по этому алгоритму, потому что ты делаешь всего один проход. Для увеличения быстродействия попробуй инициализировать temp только один раз перед циклами, то есть поставь
Тогда у тебя эти операции выполняться всего один раз. И, кстати, когда реализуешь правильный алгоритм пузырьковой сортировки - надобность в IsDone, я думаю также отпадёт.
0
|
|||||||||||||||||||||
|
1 / 1 / 1
Регистрация: 09.11.2012
Сообщений: 82
|
|||||||
| 02.10.2013, 22:18 [ТС] | |||||||
|
__________ Попробовала переделать по мотивам алгоритма. Что опять не так (виснет всё ещё)?
0
|
|||||||
|
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
|
||||||||||||||||
| 02.10.2013, 23:10 | ||||||||||||||||
|
Locust, опять невнимательность или дилетантство. Но главное, что ты пытаешься что-то делать. Смотри ты перед циклом ОДИН раз выделяешь память под temp,
Добавлено через 28 минут Тут надо выбирать. Либо ты и new и delete пишешь внутри условия if, либо вне границ главного цикла. То есть new перед циклом (как ты написала), а delete после цикла. Самое главное, чтоб количество выделений и освобождений памяти совпадало. Если выделила один раз перед циклом, то и освобождаешь один раз после цикла. Если выделяешь каждый раз при перестановке, то и освобождаешь каждый раз после перестановке. То есть в твоём случае это будет так:
0
|
||||||||||||||||
|
1 / 1 / 1
Регистрация: 09.11.2012
Сообщений: 82
|
||||||
| 02.10.2013, 23:27 [ТС] | ||||||
|
Спасибо за совет. Исправила. Хе, результата нуль.
Вот вся обработка нажатия на кнопку с выполнением задания. Может, где ещё налажала:
Не по теме: Спасибо, что нянчитесь с такими ламерами, как я. Это какое терпение иметь надо...
0
|
||||||
|
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
|
|||||||||||
| 05.10.2013, 22:09 | |||||||||||
|
Locust, видимо ты не совсем поняла алгоритм пузырьковой сортировки. Если на пальцах, то алгоритм такой. Ты сравниваешь, два соседних элемента, и если условие сравнения выполняется, то меняешь элементы местами. Так ты проходишь от первого элемента до последнего. Это будет один проход. За него отвечает внутренний цикл. Следующий проход будет начинаться уже со второго элемента, третий с третьего и т. д. За количество проходов отвечает внешний цикл. Чтоб реализовать этот алгоритм необходимо, чтоб в циклах изменялись разные переменные. То есть допустим, в главном цикле у тебя изменяется pTemp, а во внутреннем pTemp2.
Теперь смотри что получается у тебя. Оба цикла идут по одной переменной. Начинается всё верно. Сравнивается первый элемент со вторым. Первый проход идёт весь правильно. Но затем начинаются проблемы. После первого прохода у нас идёт строка 16
Добавлено через 31 минуту Хотя нет. Скорей всего у тебя программа вылетает с ошибкой, потому что указатель становится NULL. А у такого элемента нет внутри ни next, ни primary, ни middle, ни senior - вообще нет никаких переменных. То есть при попытке обратится к одному из них должна вылететь ошибка.
1
|
|||||||||||
|
1 / 1 / 1
Регистрация: 09.11.2012
Сообщений: 82
|
||||||
| 05.10.2013, 22:17 [ТС] | ||||||
|
Ну, к примеру, добавила я второй pTemp.
_______ С NULL сейчас разбираться буду. Это же вроде не do while, будет же цикл прерываться, по идее, если условие не выполняется, и до primary и иже с ним доходить вообще не должно. По крайней мере, рассуждать пыталась я так.
0
|
||||||
|
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
|
|
| 06.10.2013, 00:15 | |
|
Locust, я немного неправильно описал алгоритм пузырьковой сортировки. Каждый новый проход должен всегда начинаться с первого элемента, а не переходить на второй, третий и т. д. То есть количество проходов должно быть равно (количество элементов минус 1). И каждый проход должен идти с начального элемента до предпоследнего.
Теперь смотри что получается. Ты ввела вторую переменную в цикл, НО всё осталось по прежнему у тебя алгоритм в целом не изменился. И осталась та же самая ошибка. Во-первых всё-таки советую посмотреть алгоритм пузырьковой сортировки. Ты просто его не поняла, поэтому ты и не видишь ошибки в нём. И во-вторых, научись пользоваться дебаггером. Очень помогает. Запускаешь программу по шагам и смотришь значения переменных в нужный момент. Теперь ещё ошибки. Внешний цикл - это количество проходов. То есть в этом цикле даже не обязательно перемещаться по элементам (можно даже цикл for использовать при желании). Это не столько ошибка, сколько замечание. А вот теперь действительно ошибки. Во внутреннем цикле у тебя изменяется pTemp2, соответственно и в сравнении должна быть эта переменная. И при обмене элементов тоже pTemp2. Это раз. Вторая ошибка. Каждый проход должен начинаться с первого элемента. Что это значит? Это значит, что перед началом каждого прохода pTemp2 должен устанавливаться на начальный элемент. Думаю, если ты исправишь эти два момента, то сортироваться у тебя всё будет правильно. Но всё же посмотри на алгоритмы сортировок.
0
|
|
| 06.10.2013, 00:15 | |
|
Помогаю со студенческими работами здесь
12
Двусвязный список (в конец двусвязного списка добавить другой список) Составить двусвязный список на основе класса, объекты которого будут формировать этот список Заменить массив структур на односвязный список, и на двусвязный список
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|