22.10.2015, 00:01 | #1 (permalink) |
Новичок
Регистрация: 22.10.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Необходимо ввести с клавиатуры число X и вернуть указатель на элемент под номером X. Если такого элемента нет, добавить X к списку и вернуть на него указатель. Заранее спасибо. Собственно проблем с составлением вручную списка нет, с добавлением значения тоже. Единственное что не могу понять - как сделать среднюю часть с выводом указателя по введенному числу. Если кто-то может помочь написать этот кусочек кода,буду очень благодарен. |
22.10.2015, 00:01 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Чтобы не тратить время на поиски, отправлю вам сразу похожие обсуждения Список тем в разделе Динамический список, Паскаль Список файлообменников Черный список Вывести список положительных чисел, список отрицательных чисел на C# БД список студентов |
22.10.2015, 09:52 | #2 (permalink) |
Специалист
Регистрация: 27.04.2015
Адрес: Москва
Сообщений: 1,423
Записей в дневнике: 4
Сказал(а) спасибо: 52
Поблагодарили 53 раз(а) в 16 сообщениях
Репутация: 18120
|
По моему просто задача поставлена не совсем корректно, указатель - это адрес в памяти, ни какой конкретной "видимой" информации он не несет, можно конечно например преобразовать его к десятичному или шестнадцатиричному виду и вывести на экран при помощи writeln, но нужно ли это ?
|
22.10.2015, 17:08 | #3 (permalink) |
Новичок
Регистрация: 22.10.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Моя ошибка,не так сформулировал. Нужно вывести элемент списка,на который будет указывать указатель (тавтология,но щито поделать), а номер для указателя надо ввести самому.
А может я вообще все не так понял. Потому дословный текст задачи: "Напишите программу,воспринимающую указатель L на список целых чисел и целое число Х и возвращающую указатель на элемент Х,если он существует,а в противном случае добавляющую Х к L, если он не найден, и всегда возвращающую указатель на элемент,содержащий Х". |
22.10.2015, 18:27 | #4 (permalink) |
Специалист
Регистрация: 27.04.2015
Адрес: Москва
Сообщений: 1,423
Записей в дневнике: 4
Сказал(а) спасибо: 52
Поблагодарили 53 раз(а) в 16 сообщениях
Репутация: 18120
|
ну я бы написал примерно так, правда условия задания для меня все равно остались загадкой,
особенно фраза "программу,воспринимающую указатель L на список целых чисел" чем и как программа должна воспринимать УКАЗАТЕЛЬ на список ... Код:
program ProjectTehnari; {$APPTYPE CONSOLE} type TPRecordList=^TRecordList; TRecordList = record Next: TPRecordList; Value: Integer; end; var StartElement,FoundElement:TPRecordList; i,x:Integer; procedure AddElement(var AList:TPRecordList;AValue:Integer); var Element:TPRecordList; begin if AList = nil then begin New(Element); Element.Next:=nil; Element.Value:=AValue; AList := Element; FoundElement:=AList; end else addElement(AList.Next,AValue); end; procedure FreeList; var Next,CurList: TPRecordList; begin CurList:=StartElement; while CurList<>nil do begin Next:=CurList.Next; Dispose(CurList); CurList:=Next; end; StartElement:=nil; end; function FindElement(AValue:Integer):TPRecordList; var CurList: TPRecordList; begin FindElement:=nil; CurList:=StartElement; while CurList<>nil do begin if CurList.Value=AValue then begin FindElement:=CurList; exit; end; CurList:=CurList.Next; end; end; procedure outList; var cnt:Integer; CurList: TPRecordList; begin cnt:=1; CurList:=StartElement; writeln('---------------------------------------------'); while CurList<>nil do begin writeln('Элемент списка #' ,cnt,' Значение : ',CurList.Value); cnt:=cnt+1; CurList:=CurList.Next; end; end; procedure outElement(AElement:TPRecordList); begin writeln('---------------------------------------------'); writeln('Элемент списка имеет значение : ',AElement.Value); end; begin StartElement:=nil; {* Формируем список *} Randomize; for i:=1 to 20 do AddElement(StartElement,Random(100)); {* Вывод списка *} outList; write('Введите значение (целое число) X: '); readln(x); {* Ищем в списке *} FoundElement:=FindElement(x); {* Если не нашли то добавляем элемент в список *} if FoundElement=nil then addElement(StartElement,x); {* Выводим элемент *} outElement(FoundElement); {* Вывод списка - для проверки, что элемент добавлен*} outList; {* Удаляем список *} FreeList; readln; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|