Цитата(Катюша @ 5.08.05 22:38)
если вам интересно - то напишете..
а мне сейчас это не интересно, но НАДО..
Так вот что я тебе скажу, Катюша !!! Нам это НЕ надо и НЕ интересно !!! Все эти задачи относятся к разряду простейших и пишутся каждая за 10-15 минут максимум. Если на то пошло, ты на посты в "Верфь" потратила ГОРАЗДО больше времени, значит (повторяю еще раз, для ОСОБО ОДАРЕННЫХ), ты ждешь НЕ помощи. Помощь - это исправить программу, дать ход действия, если у тебя что-то застопорилось. Тебе надо все на блюдечке принести !!! Ну что ж ...
Цитата(Катюша @ 20.07.05 20:55)
Третье:
Ввести последовательность строк. Удалить из последовательности строки,
в которых нет ни одного символа из последней строки, после этого упорядочить последовательность в алфавитном порядке. Последовательность хранить в односвязном списке, элементами которого являются указатели на строки. Перед завершением программы очистить динамическую память с помощью процедуры Dispose.
Код
type
t_string = string[50];
p_string = ^t_string;
ptitem = ^titem;
titem = object
data: p_string;
next: ptitem;
constructor init(x: t_string; nxt: ptitem);
destructor done;
end;
tlist = object
first, last: ptitem;
constructor init;
destructor done;
procedure append(s: t_string);
procedure remove_item(p: ptitem);
procedure sort;
procedure print;
end;
constructor titem.init(x: t_string; nxt: ptitem);
begin
new(data);
data^ := x; next := nxt
end;
destructor titem.done;
begin
dispose(data)
end;
constructor tlist.init;
begin
first := nil; last := nil;
end;
destructor tlist.done;
var p, T: ptitem;
begin
p := first;
while assigned(p) do begin
T := p;
p := p^.next;
dispose(T, done)
end;
end;
procedure tlist.append(s: t_string);
var p: ptitem;
begin
new(p, init(s, nil));
if first = nil then first := p
else last^.next := p;
last := p
end;
procedure tlist.remove_item(p: ptitem);
var r: ptitem;
begin
r := p^.next;
p^.data^ := r^.data^;
p^.next := r^.next;
dispose(r, done);
r := nil
end;
procedure tlist.sort;
var
p: ptitem;
is_done: boolean;
T: t_string;
begin
repeat
p := first;
is_done := True;
while p^.next <> nil do begin
if p^.data^ > p^.next^.data^ then begin
T := p^.data^;
p^.data^ := p^.next^.data^;
p^.next^.data^ := T;
is_done := False;
end;
p := p^.next
end;
until is_done;
end;
procedure tlist.print;
var p: ptitem;
begin
p := first;
write('(list) <');
while assigned(p) do
begin
write(p^.data^, ' ');
p := p^.next
end;
writeln('>')
end;
function check(where, scab: t_string): boolean;
var
p: longint;
i: byte;
begin
p := 0;
for i := 1 to length(scab) do
p := p + pos(scab[i], where);
check := (p = 0)
end;
var
my_list: tlist;
s, last_str: t_string;
p: ptitem;
begin
my_list.init;
repeat
writeln('next string: '); readln(s);
if s <> '' then my_list.append(s);
until s = '';
writeln('После ввода данных:');
my_list.print;
last_str := my_list.last^.data^;
p := my_list.first;
while p <> nil do begin
if check(p^.data^, last_str) then
my_list.remove_item(p)
else p := p^.next;
end;
writeln('После первой проверки:');
my_list.print;
my_list.sort;
writeln('После сортировки:');
my_list.print;
my_list.done;
end.
Вот тебе помощь... Заметь, НИ ОДИН из пунктов задания не нарушен совершенно!!! Все строго по заданию. Так что... А вот теперь попробуй в этом разобраться. <_<
Цитата(Катюша @ 5.08.05 22:38)
я могу найти то, что мне нужно и среди флуда, главное, чтобы оно там было
Ну, может тебе и нужен флуд, но его вообще не должно быть в тематических разделах. Тема с 10-ю заданиями была закрыта не по причине флуда, если до сих пор не поняла - перечитай
мой ответ еще раз... А найти 90% из всех твоих заданий можно и в поиске по форуму... Только для этого надо ИСКАТЬ, а не "ждать помощи".
Цитата(Катюша @ 5.08.05 22:38)
мне еще к 9ти экзаменам готовится.
А вот это уже твои проблемы... Вот тут как раз по басне Крылова (хотя ты НЕ уточнила, какую именно басню ТЫ имела в виду, я говорю вот об этой):
Цитата
"Попрыгунья стрекоза
Лето красное пропела
Оглянуться не успела..."
(далее - по тексту)