Работа со стеком(Delphi)

Ответить
BerserK
Сообщения: 1
Зарегистрирован: 12 апр 2008, 03:56

12 апр 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
Сообщения: 229
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

12 апр 2008, 08:14

2. Что значит из каждой группы ? Как я понял у тебя идет строка целых чисел, где тут группы ?
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

12 апр 2008, 13:07

Как я понял, имеются в виду группы одинаковых чисел, т.е. в последовательности 122234445 группы одинаковых чисел 222 и 444.
Ни что так не ограничивает фантазию программиста, как компилятор...
BHy4ok
Сообщения: 229
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

13 апр 2008, 07:57

3) Единственный момент, не стал мудрить с удалением из массива, а просто удалил повторяющиеся строки из "мемо". Файл 'G' появится в папке с проектом.
На форму кидаешь: Батон, Диалон и Мемо.
Если не разберешься могу скинуть проект целиком.
Числа в файле формата:
3
7
5
...
[syntax='Delphi']
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:=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;
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
BHy4ok
Сообщения: 229
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

13 апр 2008, 09:17

2) На форму кидаешь: Батон и мемо.
Будет что-то подобное (не проверял):
[syntax='Delphi']
var
i: integer;
s: string;
begin
s := memo1.Text;
for I := 0 to memo1.GetTextLen do
begin
if S=s[i+1] then
Delete(S,i,1);
end;
memo1.Text := S;
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
BHy4ok
Сообщения: 229
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

13 апр 2008, 09:21

Какие проблемы с первой задачей, что не получилось ?
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

14 апр 2008, 11:24

Первую задачу можно поискать в инете, ее обжевывают и обсасывают в половине учебников по Дельфи или Паскалю, когда рассказывают про объектно-ориентированную модель.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить