IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Списки, не могу разобраться
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 43
Пол: Женский

Репутация: -  1  +


: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: прошу не закрывайте эту тему, сильно нужен ответ, сама не могу разобраться.


--------------------
хороших людей мало... полезных ещё меньше....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 43
Пол: Женский

Репутация: -  1  +


Помогите хотя бы советом... :p2:


--------------------
хороших людей мало... полезных ещё меньше....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
Пол: Женский

Репутация: -  1  +


Цитата(volvo @ 15.03.05 21:48)
Вот, смотрите... Я набросал программку, но предупреждаю сразу: она на всегда корректно работает... Посмотрите, как реализуется работа со списком...

Огромное спасибо!!!! :flowers:
Я посмотрела, только в паскале не могу результат получить, безконечно ввожу символы, а строка не заканчивается... хоть сколько точек ставь. Может я что не так делаю? huh.gif


--------------------
хороших людей мало... полезных ещё меньше....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Людмила   Списки   12.03.2005 21:31
volvo   Вот это прочтите: FAQ: Динамические структуры дан…   12.03.2005 21:39
Людмила   Это уже тоже читала... :( ну ни как не пойму к…   12.03.2005 22:19
volvo   Приведите, пожалуйста, Вашу программу. Возможно ош…   12.03.2005 22:35
Людмила   это ввод, формирование и вывод списка... ещё воп…   12.03.2005 23:01
Людмила   Помогите хотя бы советом... :p2:   15.03.2005 22:11
volvo   Вот, смотрите... Я набросал программку, но предупр…   15.03.2005 22:48
Людмила   Огромное спасибо!!!! :flowers: …   15.03.2005 23:05
volvo   Там стоит ReadLn, т.е. после каждого символа надо …   15.03.2005 23:10
Людмила   :p1: точно :) только теперь выдало ошибку после …   15.03.2005 23:14
volvo   Людмила Я проверял вот на такой последовательности…   15.03.2005 23:41
Людмила   да с цифрами работает, а если вводить различные с…   15.03.2005 23:45
Людмила   там почемуто если после первого символа нет ente…   16.03.2005 0:11
volvo   Вот полностью рабочая программа (без тех ограничен…   16.03.2005 0:11
Людмила   Супер, я до этого так же сама тыталась моя ошибк…   16.03.2005 0:53


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.11.2025 22:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name