Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
13 / 13 / 2
Регистрация: 10.09.2011
Сообщений: 179

Реализовать дек

21.07.2012, 14:16. Показов 5026. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у словие Реализуйте структуру данных "дек". Напишите программу, содержащую описание дека и моделирующую работу дека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

push_front
Добавить (положить) в начало дека новый элемент. Программа должна вывести ok.

push_back
Добавить (положить) в конец дека новый элемент. Программа должна вывести ok.

pop_front
Извлечь из дека первый элемент. Программа должна вывести его значение.

pop_back
Извлечь из дека последний элемент. Программа должна вывести его значение.

front
Узнать значение первого элемента (не удаляя его). Программа должна вывести его значение.

back
Узнать значение последнего элемента (не удаляя его). Программа должна вывести его значение.

size
Вывести количество элементов в деке.

clear
Очистить дек (удалить из него все элементы) и вывести ok.

exit
Программа должна вывести bye и завершить работу.
Гарантируется, что количество элементов в деке в любой момент не превосходит 100. Перед исполнением операций pop_front, pop_back, front, back программа должна проверять, содержится ли в деке хотя бы один элемент. Если во входных данных встречается операция pop_front, pop_back, front, back, и при этом дек пуст, то программа должна вместо числового значения вывести строку error.

мой код
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
var
tail,x,top,i:longint;
xxx:integer;
a:array[-10000..10000]  of longint;
s:ansistring;
 
procedure push_front(x:longint);
begin
dec(tail);
a[tail]:=x;
end;
procedure push_back(x:longint);
begin
inc(top);
a[top]:=x;
end;
 
procedure popf;
begin
if tail>top  then writeln('error') else begin inc(tail);
  writeln(a[tail-1]);
  end;
end;
 
procedure popr;
begin
if tail>top  then writeln('error') else begin dec(top);
  writeln(a[top+1]);
  end;
end;
 
procedure front;
begin
if top<tail then writeln('error')
else writeln(a[tail]);
end;
 
procedure back;
begin
if top<tail then writeln('error')
else writeln(a[top]);
end;
 
 
function size:longint;
begin
if tail>top then size:=0 else size:=top-tail+1;
end;
procedure clear;
begin
top:=0;tail:=1;
end;
 
 
begin
top:=0;readln(s);
tail:=1;
while s<>'exit' do
   begin
  if copy(s,1,9)='pop_front' then begin
 
                       popf;
 
                       end else
  if copy(s,1,8)='pop_back' then begin
 
                       popr;
 
                       end else
 
  if copy(s,1,10)='push_front' then begin
                       val (copy(s,12,length(s)-11),x,xxx);
                       {writeln(x);}
                       push_front(x);writeln('ok');
                       end else
   if copy(s,1,9)='push_back' then begin
                       val (copy(s,11,length(s)-10),x,xxx);
{                       writeln(x);  }
                       push_back(x);writeln('ok');
                       end else
 
   if copy(s,1,4)='size' then begin
 
                       writeln(size);
 
                       end else
   if copy(s,1,4)='back' then begin
 
                       back;
 
                       end else
 
   if copy(s,1,5)='clear' then begin
                              clear;
                       writeln('ok');;
 
                       end else
if copy(s,1,5)='front' then begin
                       front;
 
 
                       end;
 
 
 
   readln(s);
   end;
writeln('bye');
end.
если кто может скажите почему не проходит не прошло 2 из 9
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2012, 14:16
Ответы с готовыми решениями:

Реализовать дек ограниченного размера на базе массива
Деком называют структуру, которая сочетает очередь и стек : добавлять и убирать элементы можно с обоих концов. Надо реализовать дек...

Создать клас (дек) для работы с длинными числами
1) Первое и основное задание: Создать клас (дек) для работы с длинными числами - модульные операции реализовать взятия остатка по модулю,...

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

3
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
25.07.2012, 11:42
лично у меня работает абсолютно все. только вы не совсем корректно сделали. в задаче сказано, что не более 100 элементов в массиве. значит надо действительно создать массив из 100 элементов, и при добавлении или удалении из начала сдвигать его. тогда программа не заглючит никогда. а ваша заглючила бы, если бы реально дошла до -10000. это конечно маловероятно, но теоретически возможно. я только чуть чуть изменила...
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
uses crt;
 
var
tail,x,top,i:longint;
xxx:integer;
a:array[-10000..10000]  of longint;
s:ansistring;
 
procedure push_front(x:longint);
begin
dec(tail);
a[tail]:=x;
end;
procedure push_back(x:longint);
begin
inc(top);
a[top]:=x;
end;
 
procedure popf;
begin
if tail>top  then writeln('error') else begin inc(tail);
  writeln(a[tail-1]);
  end;
end;
 
procedure popr;
begin
if tail>top  then writeln('error') else begin dec(top);
  writeln(a[top+1]);
  end;
end;
 
procedure front;
begin
if top<tail then writeln('error')
else writeln(a[tail]);
end;
 
procedure back;
begin
if top<tail then writeln('error')
else writeln(a[top]);
end;
 
 
function size:longint;
begin
if tail>top then size:=0 else size:=top-tail+1;
end;
procedure clear;
begin
top:=0;tail:=1;
end;
 
 
 
 
begin clrscr;
top:=0;readln(s);
tail:=1;
while s<>'exit' do
   begin
  if copy(s,1,9)='pop_front' then begin
 
                       popf;
 
                       end else
  if copy(s,1,8)='pop_back' then begin
 
                       popr;
 
                       end else
 
  if copy(s,1,10)='push_front' then begin
                       val (copy(s,12,length(s)-11),x,xxx);
                       {writeln(x);}
                       push_front(x);writeln('ok');
                       end else
   if copy(s,1,9)='push_back' then begin
                       val (copy(s,11,length(s)-10),x,xxx);
{                       writeln(x);  }
                       push_back(x);writeln('ok');
                       end else
 
   if copy(s,1,4)='size' then begin
 
                       writeln(size);
 
                       end else
   if copy(s,1,4)='back' then begin
 
                       back;
 
                       end else
 
   if copy(s,1,5)='clear' then begin
                              clear;
                       writeln('ok');;
 
                       end else
   if copy(s,1,5)='front' then begin
                       front
 
 
                       end else
   writeln('error');
 
 
 
   readln(s);
   end;
writeln('bye');
readln;
end.
Миниатюры
Реализовать дек  
1
13 / 13 / 2
Регистрация: 10.09.2011
Сообщений: 179
26.07.2012, 00:15  [ТС]
да, оказывается идет переполнение массива, очень странно, если он максимум имеет длинну 100
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
26.07.2012, 12:59
tennisru, поэтому деки организуют не массивами, а списками с выделением памяти.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2012, 12:59
Помогаю со студенческими работами здесь

Дек
Создать дек и выбрать 3 элемента, начиная с последнего (правого конца) с шагом 3. Вывести на экран выбранные элементы и оставшийся дек. ...

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

Дек//Готовый код
Ребят вот нашёл код дека, и его подправил для своих нужд. Но сделал одну вещь не так, надо задать может через уикл, но не знаю как. ...

Стек, дек, очередь
Вообщем нужны примеры программ описание стек, дек и очереди.Есть одно нужны программы с интерфейсом. Помогите пожалуйста!

Сформировать список целых чисел и удалить из него все числа, меньшие 0. Дек и Стек.
привет. Сформировать список целых чисел и удалить из него все числа меньше 0 (операции над деком) Сформировать список целых чисел и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru