![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 06.07.2010
Сообщений: 105
|
![]()
Вообщем, я знаю, что заливать условие без попыток решения это моветон, но по обьективным причинам, сесть за решение и ознакомление с теор. частью я смогу не раньше 00:00, вдруг у кого-то уже есть решение подобной задачи, или захочет предложить рациональный подход, это было б супер, обещаю в где-то в часик залить свое решение+вопросы если появятся проблемы, а без них редко обходится.
1)Дан массив указателей на действительные числа. Описать процедуру, которая в исходном массиве изменяет все элементы, которые ссылаются на равные числа, первой из этих ссылок. Для проверки вывести массив показателей. ( Правильно ли я понял условие: пока пользуюсь лишь отдаленными знаниями по дин. распр. памяти, у меня есть рандомный массив указателей, и если на одно и то же число выделяется 2 и больше ячеек памяти, ну сколько чисел, столько и ячеек, то я стираю лишнее использование памяти и адресую на первую ссылку, дабы экономить память) 2) Набор латинских слов задано односвязным списком. Описать процедуру, которая упорядочивает элементы списка в порядке алфавита. Массив не создавать.
Carpe Diem
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 05.06.2010
Сообщений: 154
|
![]()
Списки. Есть книга. Очень хорошая. Там с задачами и примерами решений. Автор Окулов. В свое время мне очень помогла. Называется вроде "Программирование в алгоритмах". Про списки там очень хорошо написано
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,381
|
![]()
Так понимаю, что к спискам первая задача отношения точно не имеет.
Рандомный массив указателей - это как? Предположил бы следующий вариант: Есть некоторый массив действительных чисел, пусть даже и двумерный. Есть другой массив, в котором каждый элемент - указатель. Инициируем этот массив присваивая его элементам указатель на некоторый элемент исходного массива с действительными числами. Это подготовка к задаче. И далее. Просматриваем массив указателей и ищем равные числа в исходном массиве. Например, берём указатель из первого элемента и сравниваем число, на которое он ссылается, с другими числами исходного массива, через соответствующие указатели. Если находим равное число, то заменяем старый указатель на это число, на тот, который используется для сравнения (указывает на первое число). Например: Код:
Как-то так, ...
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 06.07.2010
Сообщений: 105
|
![]() Код:
Carpe Diem
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
указателем является ЭЛЕМЕНТ массива. т.е. вам нужно писать pa[i]^ а ещё и мой Турбо Паскаль и Delphi категорически отказался выдавать адрес массива через Код:
говорят нельзя выводить переменную такого типа: Illegal type in Write/Writeln statement А Ваш Паскаль это "скушал"? и если да - то Вы каким Паскалем пользуетесь? Кстати, а смысл этого какой? Что Вы хотите получить на экране? а основной цикл я бы рекомендовал записать так: Код:
Последний раз редактировалось Serge_Bliznykov; 03.04.2012 в 09:02. |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 06.07.2010
Сообщений: 105
|
![]()
ABC выводит адреса,но там не в этом суть
цель задания показатели, которые ссылаются на равные числа, ссылать первому указатели с этим числом. т.е. я хочу показать,каким массив указателей был до и после изменений. Вот вторая задача, помоги найти ошибку, работает не коректно: Код:
Вроде прога работает правильно, но выдает в диалоговое окно лишние дублирование сообщания, а порой я не успеваю еще ввести команду, как оно само решает какую команду я ввел, вроде сколько не проверяю, все равно не могу найти ошибки.
Carpe Diem
Последний раз редактировалось Heming; 03.04.2012 в 09:28. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
во-первых, я бы записал основное тело программы так:
Код:
ну, например, так: Код:
и вызывал её 's' : outlist; а в начале цикла выкинул бы вызов.. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 06.07.2010
Сообщений: 105
|
![]() Код:
Первый код тоже правильный, в ABC паскале выводятся адреса(сегмент-смещение) на экран и можно убедится, что таки да адреса у указателей ссылающихся на одинаковые числа будут присвоены первому указателю с таким значением, пропишите только вывод еще адресов отдельно.
Carpe Diem
Последний раз редактировалось Heming; 14.04.2012 в 18:24. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Код:
так понятнее? Кстати, в данном случае переменную ch можно смело опустить и просто читать коды клавиш (никуда их не сохраняя). например, так: Код:
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 06.07.2010
Сообщений: 105
|
![]()
Да все стало на свои места, когда я почитал про модуль crt, но за ваш ответ тоже спс.
Carpe Diem
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Тема Указатели! Pascal | ElenCelsi | Помощь студентам | 17 | 07.01.2011 22:49 |
Pascal(списки,указатели,множества.) | Dancewithevil | Помощь студентам | 2 | 26.05.2010 00:13 |
указатели и списки данных (pascal) | Nec_Too | Помощь студентам | 3 | 29.04.2010 17:10 |