PDA

Просмотр полной версии : Работа со стеком(Delphi)



BerserK
12.04.2008, 04:11
1. Для стека описать следующие процедуры или функции:
• Создание пустого стека S (очистка стека);
• Добавление в стек S элемента x (instack(S ,x));
• Удаление из стека S элемента c присвоением его значения параметру x
outstack(S ,x)).
Если операция по каким-либо причинам не может быть выполнена, следует вызвать
некоторую процедуру Error(k), где k – номер ошибки: 1 – переполнение стека, 2 –
исчерпание стека.

2. В списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного.

3. Дан файл f, компонентами которого являются целые числа. Получить в файле g все положительные числа, входящие в файл f. Числа в файле g должны следовать в порядке убывания, без повторений.

BHy4ok
12.04.2008, 08:14
2. Что значит из каждой группы ? Как я понял у тебя идет строка целых чисел, где тут группы ?

MOTOCoder
12.04.2008, 13:07
Как я понял, имеются в виду группы одинаковых чисел, т.е. в последовательности 122234445 группы одинаковых чисел 222 и 444.

BHy4ok
13.04.2008, 07:57
3) Единственный момент, не стал мудрить с удалением из массива, а просто удалил повторяющиеся строки из "мемо". Файл 'G' появится в папке с проектом.
На форму кидаешь: Батон, Диалон и Мемо.
Если не разберешься могу скинуть проект целиком.
Числа в файле формата:
3
7
5
...

var
s1: string;
F,G: TextFile;
S: string;
a: array[0..100] of integer;
i,n,j,buf,st,k: integer;
begin
memo1.Clear;
if OpenDialog1.Execute then
begin

AssignFile(F,OpenDialog1.FileName);
Reset(F);
While not Eof(F) do
begin
readln(F,S);
a[i]:=StrToINt(S);
inc(i);
end;
st := i-1;

for i := i-1 downto 1 do
begin
for j := 0 to i-1 do
if a[j] < a[j+1] then
begin
buf := a[j];
a[j] := a[j+1];
a[j+1] := buf;
end;
end;
for k:=0 to st do
S1:=S1+IntTostr(a[k])+#13#10;
memo1.Text := (S1);
for n:=0 to Memo1.Lines.Count-1 do
if (memo1.Lines[n]=memo1.Lines[n+1]) then memo1.Lines.Delete(n);

AssignFile(G, 'Sort.txt');
Rewrite(G);
writeln(G, Memo1.Text);
CloseFile(G);
end;

BHy4ok
13.04.2008, 09:17
2) На форму кидаешь: Батон и мемо.
Будет что-то подобное (не проверял):

var
i: integer;
s: string;
begin
s := memo1.Text;
for I := 0 to memo1.GetTextLen do
begin
if S[i]=s[i+1] then
Delete(S,i,1);
end;
memo1.Text := S;

BHy4ok
13.04.2008, 09:21
Какие проблемы с первой задачей, что не получилось ?

Хыиуду
14.04.2008, 11:24
Первую задачу можно поискать в инете, ее обжевывают и обсасывают в половине учебников по Дельфи или Паскалю, когда рассказывают про объектно-ориентированную модель.