![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
daZe1 |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Реальное имя: Данил Репутация: ![]() ![]() ![]() |
Задача такова:
задан массив из 40 случайных элементов, переписать из массива в линейный двунаправленный список чётные элементы массива, добавить в начало списка среднее арифметическое элементов списка и в конец добавить среднее геометрическое элементов списка. В принципе решить я ее смог... Program list;проверял...вроде работает... но для меня тема списков, динамических переменных и т.д. новая, поэтому если кто найдет ошибки - напишите, плиз, буду благодарен!!! |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата переписать из массива в линейный двунаправленный список чётные элементы массива Ага, и ты описываешь массив вещественных чисел, да? Как определяешь их четность (с учетом того, что Random выдает числа в интервале 0..1)? Или речь об элементах с четными индексами?Цитата проверял...вроде работает. Как ты проверял? В отладчике? Сделал бы вывод на экран, все стало бы проще... Кстати, ты память выделил, а освобождать кто будет? При прогоне под FPC имеем: Цитата Heap dump ... 22 memory blocks allocated : 352/352 0 memory blocks freed : 0/0 22 unfreed memory blocks : 352 Сообщение отредактировано: volvo - 5.01.2008 3:07 |
daZe1 |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Реальное имя: Данил Репутация: ![]() ![]() ![]() |
Я написал процедуру вывода:
procedure WriteList;проверял с ее же использованием.... под четными элементами имеются в виду элементы с четными индексами. еще нашел свой касяк....среднее геометрическое надо было искать по формуле SrGeom:=exp((1/kol) * ln(prod). Цитата Кстати, ты память выделил, а освобождать кто будет? А освобождать надо в самом конце??? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата А освобождать надо в самом конце??? Да... Но перед этим я бы все-таки порекомендовал тебе немного подкорректировать программу. Не привыкай работать через глобальные переменные. У процедур могут быть параметры - пользуйся этим. Смотри: Program list;Итого: достаточно двух процедур вместо трех (незачем создавать свою процедуру на каждый чих), причем если тебе теперь понадобится модифицировать программу для работы, скажем, с двумя списками - это будет сделать гораздо проще, чем раньше... |
daZe1 |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Реальное имя: Данил Репутация: ![]() ![]() ![]() |
procedure AddFirst(var L: TPList; value: real); if L <> nil then begin а это условие для универсальности??? ведь в качаестве фактического параметра в функцию возвращается указатель на первый узел, а он в любом случае не пустой... и еще вопрос по поводу освобождения памяти... освобождать надо только те динамические структуры, на которые память выделялась при помощи new()??? Сообщение отредактировано: volvo - 27.11.2009 16:49 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата ведь в качаестве фактического параметра в функцию возвращается указатель на первый узел, а он в любом случае не пустой... При добавлении первого элемента в список он как раз пустой...Цитата освобождать надо только те динамические структуры, на которые память выделялась при помощи new()??? Да, именно их и надо освобождать... |
daZe1 |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Реальное имя: Данил Репутация: ![]() ![]() ![]() |
Цитата При добавлении первого элемента в список он как раз пустой... Но новые элементы добавляются в конец! Я пробовал прогонять... это условие выполняется, т.е. L <> nil... или это условие на случай,если список будет создаваться добавлением в начало??? |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Сегодня у тебя новые элементы добавляются в конец, завтра - надо будет добавлять в начало. Не надо подгонять процедуру под конкретные условия только этой задачи, когда можно сделать более универсальной (особенно если для этого не нужно прилагать большие усилия: всего навсего одна проверка на nil), такой, чтобы можно было ее использовать неоднократно...
|
daZe1 |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Реальное имя: Данил Репутация: ![]() ![]() ![]() |
Ясно, спасибо!!!
![]() Вроде более или менее разобрался)) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:28 |