Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33

Задача на Стек: прокомментировать код

01.06.2016, 10:00. Показов 1793. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обьяснить где какие строчки в программе обьясняют программу на динамические переменные а именно СТЕК! и обьяснить строки
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
Program stack_16; 
type 
pComp= ^Comp; 
Comp=record 
Data:integer; 
pNext: pComp; 
end; 
var pTop,pAux: pComp; 
f:Text; 
work,a:integer; 
 
procedure menshe (var a:integer); 
begin 
pAux:=pTop; 
while pAux <>nil do 
begin 
if pAux^.Data < a then 
write(pAux^.Data + ' '); 
pAux := pAux^.pNext; 
end; 
writeln; 
end; 
 
procedure bolshe (var a:integer); 
begin 
pAux:=pTop; 
while pAux <>nil do 
begin 
if pAux^.Data >= a then 
write(pAux^.Data + ' '); 
pAux := pAux^.pNext; 
end; 
writeln; 
end; 
 
begin 
pTop:=nil; 
assign(f, 'input.txt'); 
reset(f); 
while not eof(f) do 
begin 
read(f, work); 
new(pAux); 
pAux^.Data:=work; 
pAux^.pNext:=pTop; 
pTop:=pAux; 
end; 
write('a='); 
read(a); 
 
menshe(a); 
bolshe(a); 
 
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.06.2016, 10:00
Ответы с готовыми решениями:

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

Перевод двоичной тетрады в 16-ричный код. Прокомментировать код
Помогите пожалуйста прокомментировать код программы перевода двоичной тетрады в 16-ричный код: sseg segment stack dw 128 dup...

Прокомментировать код
Реализация на C утилиты, похожей на grep. Помогите разобраться с кодом: Main.c #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

15
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 10:30
Цитата Сообщение от Nikita Sergeevi Посмотреть сообщение
программу на динамические переменные
вот эта
Цитата Сообщение от Nikita Sergeevi Посмотреть сообщение
pComp= ^Comp;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Цитата Сообщение от Nikita Sergeevi Посмотреть сообщение
а именно СТЕК!
Эта программа не использует стек!
Над с стеком определены только две операции Push — „пихнуть“ и Pop — „выпихнуть“…
… которые определены только наполовину: Push реализована, а вместо Pop работаете как с обыкновенным списком!
0
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33
01.06.2016, 10:30  [ТС]
А как сделать что бы она использовала? можете помочь?:
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 10:31
Ну, дык, для начала, не плохо бы узнать задание ;–)
0
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33
01.06.2016, 10:41  [ТС]
Сию минуту
Используйте линейный список для представления стека для решения следующей задачи. Пусть дан файл, состоящий из чисел. За один просмотр файла и без использования дополнительных файлов напечатать элементы файла в следующем порядке: сначала все числа, меньшие а, а затем все числа >=а, причем числа в каждой группе должны печататься в обратном порядке относительно исходного (а – заданное число).
Пример: элементы файла – 1, 2,3,4,5,6,7,8,9,10
а=6
Порядок при печати: 5 4 3 2 1
10 9 8 7 6
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 10:55
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
begin
  /// заданное число
  var a := ReadLnInteger('a =');
  /// открываем фал на чтение
  var f : Text; Reset(f, 'input.txt');
  /// заводим стеки
  var less := New Stack<integer>; // менее
  var over := New Stack<integer>; // более
  var n : Integer;
  /// читаем числа из файла
  while Not EOF(f) do
    begin
      Read(f, n);
      if n < a then
        less.Push(n) /// пихаем в „менее“
      else
        over.Push(n); /// пихаем в „более“
    end;
  /// выводим из „менее“
  while less.Count > 0 do
    begin
      n := less.Pop;
      Print(n);
    end;
  WriteLn;
  /// выводим из „более“
  while over.Count > 0 do
    begin
      n := over.Pop;
      Print(n);
    end;
  WriteLn;
end.
1
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33
01.06.2016, 10:57  [ТС]
А это с самого начала программа или её нужно вставить в код с какого то момента? после процедур?
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 10:58
Это вся программа!
1
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33
01.06.2016, 11:03  [ТС]
Спасибо огромное, а вы на очередь задачи не знаете?)) тоже динамические переменные...
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 11:04
Знаю!
А что?
0
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33
01.06.2016, 11:08  [ТС]
Там в задаче нужно обьяснить где работает очередь
Дан файл целых чисел, содержащий не менее двух элементов. Выбрав для представления данных подходящую списковую структуру, напечатайте все числа между наибольшим и наименьшим членами этой последовательности.
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
Program ocher; 
type 
pComp=^Comp; 
Comp=record 
Data:integer; 
pNext:pComp; 
end; 
var pTop,pAux,pMin,pMax: pComp; 
f:Text; 
work,max,min:integer; 
first:boolean; 
 
begin 
pTop:=nil; 
assign(f, 'fail.txt'); 
reset(f); 
while not eof(f) do 
begin 
read(f, work); 
new(pAux); 
pAux^.Data:=work; 
pAux^.pNext:=pTop; 
pTop:=pAux; 
end; 
 
min := 10000; 
max := -10000; 
pMin := nil; 
pMax := nil; 
first := false; 
pAux:=pTop; 
while pAux <>nil do 
begin 
if pAux^.Data < min then 
begin 
min := pAux^.Data; 
pMin := pAux; 
first := true; 
end; 
if pAux^.Data > max then 
begin 
max := pAux^.Data; 
pMax := pAux; 
first := false; 
end; 
pAux := pAux^.pNext; 
end; 
 
if not first then 
begin 
pAux := pMin^.pNext; 
while pAux <> pMax do 
begin 
write(pAux^.Data + ' '); 
pAux := pAux^.pNext; 
end; 
end else begin 
pAux := pMax^.pNext; 
while pAux <> pMin do 
begin 
write(pAux^.Data + ' '); 
pAux := pAux^.pNext; 
end; 
end; 
 
end.
я преподу обьясняю как принцип работает очереди, а он говорит а где именно в программе описана Очередь! и не могу обьяснить, там же есть отличия между стеком очередью и листом ,
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 11:10
Ну, если сам писал, то должен объяснить!
0
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33
01.06.2016, 11:11  [ТС]
Так не сам писал, тоже с форума взял, а там ничего не обьяснино
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 11:14
Ну, дык, попроси, чтоб там объяснили!
Дело в том, что данный код совсем не на PABC.NET…
0
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 33
01.06.2016, 11:26  [ТС]
А можете вот эту задачу посмотреть она на список задача,

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
117
program zad4;
uses crt;
type
sl = ^zap;
zap = record
ch: integer;
next: sl;
end;
var
first1, first2, spi1, spi2: sl;
procedure vvod(var u: sl);
var
x: sl;
digit: integer;
begin
writeln('Введите список');
u := nil;
writeln('Введите элементы списка. Конец ввода 0');
readln(digit);
if digit <> 0 then
begin
new(x);
x^.next := nil;
x^.ch := digit;
u := x;
end;
while true do
begin
readln(digit);
if (digit = 0) then break;
new(x^.next);
x := x^.next;
x^.next := nil;
x^.ch := digit;
end;
writeln;
end;
function ravno(list1, list2: sl): boolean;
begin
Result:= true;
while (list1 <> nil) or (list2 <> nil) do
begin
if (list1^.ch <> list2^.ch) then
begin
Result := false;
break;
end;
list1 := list1^.next;
list2 := list2^.next;
end;
if (list1 = nil) and (list2 = nil) then Result := true else Result := false;
end;
function hot2(list: sl): boolean;
var
sov: sl;
schet: integer;
begin
result:=true;
while(list <> nil) do
begin
sov := list^.next;
while(sov <> nil) do
begin
if sov^.ch = list^.ch then
begin
Result := false;
break;
end;
sov := sov^.next;
end;
if Result = false then break;
list := list^.next;
end;
end;
procedure vizhn(u: sl);
begin
while u <> nil do
begin
writeln(u^.ch);
u := u^.next;
end;
end;
procedure conets(var u:sl);
var
first:sl;
begin
clrscr;
first:=u;
while (true) do
begin
first:= first^.next;
Writeln(first^.ch);
if (first^.next = nil) then break;
end;
first^.next:=u;
u:=u^.next;
first:=first^.next;
first^.next:=nil;
vizhn(u);
end;
var
i: integer;
begin
vvod(first1);
vvod(first2);
writeln('1-сравнение списков');
writeln('2-поиск двух одиннаковых');
writeln('3-перенос первого элемента');
writeln('введите пункт меню');
readln(i);
case i of
1:if ravno(first1,first2) then writeln('списки одиннаковые') else writeln('списки не одиннаковы');
2:if hot2(first1) then writeln('В списке нет одиннаковых элементов') else writeln('В списке есть одиннаковые элементы');
3:conets(first1);
 
end;
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2016, 11:37
Ну посмотрел…
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2016, 11:37
Помогаю со студенческими работами здесь

Прокомментировать код
Не понимаю функций,которые использованы в данном коде. Помогите пожалуйста! Просто опишите каждую функцию.. Спасибо большое!) ...

Прокомментировать код
объясните хотя бы самые сложные строчки в данной части программы Procedure Vvod(x,y:integer;max:integer;mode:string;var...

Прокомментировать код
Кто-нибудь мог бы прокомментировать строчки этого кода? Не могу разобраться, как работает using System; using...

Прокомментировать код
Доброго времени суток,возникла такая проблема никак не могу разобраться с кодами, помогите прокомментировать коды..... #include...

Прокомментировать код
Помогите разобраться в коде! #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; typedef struct...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru