![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Юличка |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите составить программу, которая вставляет в список L
новый элемент F перед первым вхождением элемента Е, если Е входит в L. Программа должна быть реализована с применением динамических переменных (указателей). |
![]() ![]() |
НарКот |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Юлечка. Посмотри-ка
Количество элементов можешь изменить по своему усмотрению (const N=14)!!! Исходный код Uses Crt; Type Spis=^L; L=record El: Word; Next: Spis end; Var A:array[1..15] of Spis; k,j,i,E,F:integer; q:char; const N=14; {===== =====} { данная функция ищет вхождение элемента Е в список, и при его наличии в нем вставляет впереди него элемент F } function Search(simb:integer):Spis; var i,j,k:integer; Begin k:=1; For i:=1 To N Do If A[i]^.El=E Then {проверка принадлежности элемента Е массиву данных } Begin For j:=N+1 DownTo i Do A[j]^.El:=A[j-k]^.El; {сдвиг элементов массива начиная с элемента Е} A[i]^.El:=F; {вправо на одну ячейку и запись} Inc(k); {на место элемента Е элемента F} Break; End; End; repeat ClrScr; TextColor(red); Randomize; WriteLn('Превоначальный список'); For i:=1 To N Do New(A[i]); {Резервируем фрагменты кучи} A[N+1]^.El:=0; {последнему элементу для удобства присваиваем 0} For i:=1 To N Do Begin A[i]^.El:=Random(15); WriteLn('*',A[i]^.El) End; A[N+1]^.Next:=Nil; {Стираем последний указатель } {===== =====} TextColor(blue); Write(' Введите элемент списка Е= '); ReadLn(E); Write('Введите вставляемый в список элемент F= '); ReadLn(F); {===== =====} Search(E); TextColor(yellow); WriteLn('Модифицированный список имеет вид: '); For i:=1 To (N+1) Do WriteLn('*',A[i]^.El); WriteLn('Повторить ЕЩЕ?(Y/N)'); q:=ReadKey; until not (q in ['Y','y']); End. |
![]() ![]() |
![]() |
Текстовая версия | 7.09.2025 22:57 |