![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
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. |
![]() ![]() |
![]() |
Текстовая версия | 22.07.2025 10:57 |