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

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

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

> Задача о стеках
Murderer
сообщение 3.04.2007 18:39
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Арслан

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


Даны три стека, наполненные натуральными числами и четвертый стек пустой. В четвертый стек поместить три числа, являющиеся максимальными числами в первом, втором и третьем стеке. В четвертом стеке числа расположить в порядке неубывания, а в первых трех стеках порядок расположения оставшихся чисел оставить прежним.

Т.е. я понимаю так: через пробел в программе вводится числа в первый стек и нуль завершает ввод, потом второй и соответственно третий стек. Затем программа выводит три максимальных числа из каждого стека в порядке неубывания.

Уже которую неделю парюсь и все безуспешно... Ну не могу понять я эти стеки.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 4.04.2007 7:08
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


type

TData = Integer;

PTListItem = ^TlistItem;

TListItem = Record
data: TData;
next: PTListItem;
end;

TList = Object

head: PTListItem;

constructor Create;
destructor Destroy;

procedure Push(const data: TData);

procedure GenerateRandomList(const count, rnd: integer);

procedure PrintList;

function FindMax: Integer;


end;

constructor TList.Create;
begin
head := nil;
end;

destructor TList.Destroy;
var
H, T: PTListItem;
begin
H := head;
while (H <> nil) do begin
T := H;
H := H^.Next;
Dispose(T);
end;
end;

procedure TList.Push(const data: TData);
var
T, H: PTListItem;
begin
New(T);
T^.data := data;
T^.Next := nil;

H := Head;

if Head = nil then Head := T else begin
while (Head^.Next <> nil) do Head := Head^.Next;
Head^.Next := T;
Head := H;
end;
end;

procedure TList.PrintList;
var
H: PTListItem;
begin
H := Head;
while (Head <> nil) do begin
writeln(Head^.Data);
Head := Head^.Next;
end;
Head := H;
end;

procedure TList.GenerateRandomList(const count, rnd: Integer);
var
i: Integer;
begin
for i := 1 to count do Push(random(rnd));
end;

function TList.FindMax: Integer;
var
H: PTListItem;
max: TData;
begin
H := Head;
max := -MaxInt;
while (Head <> nil) do begin
if Head^.Data > max then max := Head^.Data;
Head := Head^.Next;
end;
Head := H;
FindMax := max;
end;

var
L: Array [1..4] of TList;
M: Array [1..3] of TData;

i, j, T: Integer;
begin
randomize;

for i := 1 to 3 do begin
L[i].Create;
L[i].GenerateRandomList(Random(5) + 1, Random(10) + 1);
writeln('List#', i);
L[i].PrintList;
M[i] := L[i].FindMax;
end;

for i := 3 downto 2 do
for j := 1 to i - 1 do
if M[j] <= M[j + 1] then begin
T := M[j]; M[j] := M[j + 1]; M[j + 1] := T;
end;

for i := 1 to 3 do L[4].Push(M[i]);

writeln('List#4');

L[4].PrintList;

for i := 1 to 4 do L[i].Destroy;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Murderer   Задача о стеках   3.04.2007 18:39
klem4   Все о динамических структурах данных. Тут был ?   3.04.2007 18:41
Murderer   Там то я был... но мозг видать у меня не может пон...   3.04.2007 18:50
volvo   Можно обойтись четырьмя... Сначала проходишь по к...   3.04.2007 22:23
Murderer   Вот именно что никак. У меня даже кода программног...   4.04.2007 5:40
klem4   type TData = Integer; PTListItem = ^TlistIte...   4.04.2007 7:08
volvo   klem4, список <> стек ... Вся сложность-то к...   4.04.2007 10:10
klem4   И соответственно после обращения этот элемент из...   4.04.2007 10:19
volvo   Смотря какую операцию вызывать... Может, удаляется...   4.04.2007 10:26
klem4   Вот что пока выходит: Добваляем ф-ю Pop, изменяе...   4.04.2007 12:37
volvo   Вариант №2: type ttype = integer; ptitem = ^t...   4.04.2007 12:59
Murderer   Спасибо вам огромное! Не ожидал. А как сделать...   4.04.2007 17:44
Murderer   Простите. Просто я начинающий в паскале и сейчас е...   4.04.2007 19:33
volvo   В той программе, которую я тебе привел, в стек зан...   4.04.2007 19:46
Murderer   А чтобы увидеть результаты выполнения программы, ...   4.04.2007 20:47
Murderer   А вот в приведенной программе как сделать так, что...   5.04.2007 14:45
volvo   for i := 1 to 3 do begin st_arr[i].init; ...   5.04.2007 14:57
Murderer   Да, я видать глупость сморозил. Я хотел просто вме...   5.04.2007 15:00
Murderer   Все равно не выходит! Что мне исправить, чтобы...   5.04.2007 15:44
volvo   Так... Давай договоримся, ты присоединяешь СВОЮ пр...   5.04.2007 17:12
Murderer   И все таки... что мне нужно исправить, чтобы я сам...   11.04.2007 17:35
volvo   Предыдущее сообщение ты проигнорировал? Хорошо, з...   11.04.2007 17:38
Murderer   Извини Вольво! Просто очень надо, а я не силен...   11.04.2007 17:59
Lapp   чтобы я нужное мне число элементов вводил в прогр...   16.06.2007 13:15
Murderer   Там что исправить надо?   11.04.2007 18:36


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

 



- Текстовая версия 24.08.2025 16:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"