![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Людмила |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
:molitva: Ребята объясните мне необходимо решить задачу (я только учусь, если вопросы глупые извините):
Из динамического списка, содержащего последовательность символов, удалить все одинаковые символы, кроме одного. есть решение этой задачи только не при помощи списков, сколько не читаю не могу понять как эти самые списки описывать. Если не трудно помогите изменить решение так, что бы символы были списком. Всем зарание спасибо. Код Uses Crt; Var I,J : Integer; Si,So : String; Begin TextColor(White); WriteLn('‚введите строку символов -'); TextColor(LightGray); ReadLn(Si); For I := Length(Si) DownTo 1 Do For J := I-1 DownTo 1 Do Begin If Si[I] = Si[J] Then Si[J] := CHR(27); End; So := ''; For I := 1 To Length(Si) Do If Si[I] <> CHR(27) Then So := So + Si[I]; TextColor(White); WriteLn('Заданная строка после обработки:'); TextColor(LightGray); WriteLn(Si); TextColor(White); WriteLn('полученная строка содержащия только последние вхождения символов:'); TextColor(LightGray); WriteLn(So); End. :p2: прошу не закрывайте эту тему, сильно нужен ответ, сама не могу разобраться. -------------------- хороших людей мало... полезных ещё меньше....
|
![]() ![]() |
Людмила |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
Помогите хотя бы советом... :p2:
-------------------- хороших людей мало... полезных ещё меньше....
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Вот, смотрите... Я набросал программку, но предупреждаю сразу: она на всегда корректно работает... Посмотрите, как реализуется работа со списком...
Исходный код Type ref=^node; node=record next:ref; lit:char; end; tlist = record first, last: ref; end; { Процедура добавления символа к списку } procedure append(var list: tlist; ch: char); var pt: ref; begin new(pt); pt^.lit := ch; pt^.next := nil; if list.first = nil then list.first := pt else list.last^.next := pt; list.last := pt; end; { процедура удаления символа из списка } function remove(from: ref; ch: char): integer; var T, prv, pt: ref; count: integer; begin pt := from; count := 0; while (pt <> nil) and (pt^.lit = ch) do begin T := pt^.next; dispose(pt); inc(count); pt := T; end; prv := pt; pt := pt^.next; while pt <> nil do begin if pt^.lit = ch then begin prv^.next := pt^.next; dispose(pt); inc(count); pt := prv^.next end else begin prv := pt; pt := pt^.next; end; end; remove := count end; { процедура печати содержимого списка } procedure print(list: tlist); var p: ref; begin p := list.first; while p <> nil do begin write(p^.lit); p := p^.next end end; var a:char; list: tlist; p: ref; begin with list do begin first := nil; last := nil; end; repeat readln(a); if a <> '.' then append(list, a); until a = '.'; p := list.first; while p <> nil do begin if p^.next <> nil then begin remove(p^.next, p^.lit); end; p := p^.next; end; print(list); end. Цитата(Людмила @ 15.03.05 17:11) Помогите хотя бы советом... :p2: А вот и совет: "Не пытайтесь объять необъятное" (С) К. Прутков В смысле, не нужно пытаться ВСЕ действия производить в основной программе. Так очень легко запутаться. Разбейте программу на процедуры, и будет гораздо легче... |
Людмила |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата(volvo @ 15.03.05 21:48) Вот, смотрите... Я набросал программку, но предупреждаю сразу: она на всегда корректно работает... Посмотрите, как реализуется работа со списком... Огромное спасибо!!!! :flowers: Я посмотрела, только в паскале не могу результат получить, безконечно ввожу символы, а строка не заканчивается... хоть сколько точек ставь. Может я что не так делаю? ![]() -------------------- хороших людей мало... полезных ещё меньше....
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 11:03 |