Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
1

Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном»

09.04.2016, 21:46. Просмотров 2131. Ответов 3
Метки нет (Все метки)

Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном».
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2016, 21:46
Ответы с готовыми решениями:

Создать стек из случайных целых чисел, и из него сделать ещё два стека
Здравствуйте! Хочу обратится, с программой) Нужно написать программу: Создать стек из случайных...

Создать стек, содержащий исходные числа (последнее число будет вершиной стека)
Дано неотрицательное число N и набор из N чисел. Создать стек, содержащий исходные числа (последнее...

Создать стек из случайных целых чисел
Создать стек из случайных целых чисел. Определить сколько элементов находится между максимальным и...

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

3
Hello Kitty
686 / 559 / 401
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
10.04.2016, 13:16 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
const D_SIZE = 100;
type d_item_t = integer;
type d_list_t = array[1..D_SIZE] of d_item_t;
type d_comp_t = record
  list: d_list_t;
  stack: integer;
  queue: integer;
  count: integer;
end;
 
procedure DInc( var a: integer );
begin
  a := a + 1;
  if a > D_SIZE then a := 1;
end;
procedure DDec( var a: integer );
begin
  a := a - 1;
  if a < 1 then a := D_SIZE;
end;
 
procedure DReset( var d: d_comp_t );
begin
  d.stack := 1;
  d.queue := D_SIZE;
  d.count := 0;
end;
function DPushFront( var d: d_comp_t; const item: d_item_t ): boolean;
begin
  if d.count = D_SIZE then 
    DPushFront := false
  else begin  
    d.count := d.count + 1;
    d.list[ d.queue ] := item;  
    DDec(d.queue);
    DPushFront := true;
  end;
end;  
function DPushBack( var d: d_comp_t; const item: d_item_t ): boolean;
begin
  if d.count = D_SIZE then 
    DPushBack:= false
  else begin
    d.count := d.count + 1;
    d.list[ d.stack ] := item;  
    DInc(d.stack);
    DPushBack := true;
  end;
end;  
function DPopFront( var d: d_comp_t; var r: d_item_t ): boolean;
begin
  if d.count = 0 then 
    DPopFront:= false
  else begin
    DInc(d.queue);
    d.count := d.count - 1;
    r := d.list[ d.queue ];
    DPopFront := true;
  end;
end;
function DPopBack( var d: d_comp_t; var r: d_item_t ): boolean;
begin
  if d.count = 0 then 
    DPopBack:= false
  else begin
    DDec(d.stack);
    d.count := d.count - 1;
    r := d.list[ d.stack ];
    DPopBack := true;
  end;
end;
 
 
 
const N = 10;
var 
  stack: d_comp_t;
  stackTmp: d_comp_t;
  i: integer;
  item: d_item_t;  
 
procedure PrintStack( stack: d_comp_t );
var
  i: integer;
  item: d_item_t;
begin
  i := 1;
  while DPopFront( stack , item ) do begin
    writeln('Stack[',i,']: ' , item);
    i := i + 1;
  end;
end; 
 
begin
 
DReset( stack );
for i:=1 to N do
  DPushBack( stack , random( -100 , 100 ) );
  
PrintStack(stack);
 
writeln('------------------------');
 
DReset(stackTmp);
for i:=1 to N do begin
  DPopBack( stack , item );
  DPushBack( stackTmp, item );
end;
 
stack := stackTmp;
 
PrintStack(stack);
  
 
 
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30669 / 20015 / 7830
Регистрация: 22.10.2011
Сообщений: 34,842
Записей в блоге: 6
10.04.2016, 14:37 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

С каких пор у стека есть что-либо, кроме Push/Pop? Это какой-то Deque получается, двусторонняя очередь: с любой стороны пишем, с любой читаем. Вот стек:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
type
  PStack = ^TStack;
  TStack =
  record
    data : integer;
    next : PStack;
  end;
 
procedure Push(var s : PStack; v : integer);
var t : PStack;
begin
  new(t);
  t^.data := v;
  t^.next := s;
  s := t;
end;
 
function Pop(var s : PStack) : integer;
var t : PStack;
begin
  if s <> nil then
  begin
    Pop := s^.data;
    t := s;
    s := s^.next;
    dispose(t);
  end;
end;
 
procedure Print(s : PStack);
var t : PStack;
begin
  t := s;
  while t <> nil do
  begin
    write(t^.data:4);
    t := t^.next;
  end;
  writeln;
end;
 
var
  s, t : PStack;
  i : integer;
begin
  s := nil;
  for i := 1 to 5 do Push(s, Random(100));
  Print(s); // созданный стек
 
  t := nil;
  while s <> nil do Push(t, Pop(s));
  s := t;
  Print(s); // "перевернутый" стек
 
  while s <> nil do Pop(s); // освобождаем память
end.
0
Hello Kitty
686 / 559 / 401
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
10.04.2016, 15:15 4
Цитата Сообщение от volvo Посмотреть сообщение
С каких пор у стека есть что-либо, кроме Push/Pop? Это какой-то Deque получается, двусторонняя очередь: с любой стороны пишем, с любой читаем. Вот стек:
Нету их. но мне лень переписывать уже написанный код Реализовать дек ограниченного размера на базе массива
используются только методы стека
DPushBack и DPopBack ( кроме PrintStack там я думаю надо с начала показать массив )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2016, 15:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать стек из случайных целых чисел
Создать стек из случайных целых чисел. Вставить цифру «0» в середину стека, если четное число...

Создать стек из случайных целых чисел
Народ, кто знаком со стеком и кого есть инфа по этому разделу - поделитесь. А вот собственно...

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

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

Создать стек из случайных целых чисел
Помогите пожалуйста написать программу : ...

Создать стек из случайных целых чисел и отсортировать элементы по возрастанию (убыванию)
Здраствуйте!Можете помочь с заданием???Дана программа: #include &lt;iostream&gt; #include &lt;malloc.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.