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

Что не так (стеки)?

01.06.2019, 19:43. Показов 449. Ответов 7

Студворк — интернет-сервис помощи студентам
В чем ошибка? После сканирования и вывода стек очищается, хотя var перед ним в процедуре не стоит.
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
Program prstack;
type
   tovar=record
      dd:byte;    //День заказа
      mm:byte;    //Месяц заказа
      gg:integer;    //Год заказа
      nazv:string[20];   //Название товара
      kol:integer;   //Кол-во товара
      cena:real;   //цена товара
   end;
   celltype = record 
        element:tovar;
        next: ^celltype;
    end; 
    STACK =^celltype;
    
var 
   top: STACK;
   naf:string;
 
function Empty( top: STACK) :boolean;
begin
Empty:= Top=nil;
end;        {  EMPTY }
 
procedure Push(x: tovar; var top: STACK);
{добавление элемента в стек}
Var p: STACK;
begin
  new(p); {создаем новый узел}
  p^.next:= top; {он будет находиться перед вершиной}
  p^.element:= x;
  top:=p;   {Делаем p вершиной стека}
end;        {  PUSH }
 
procedure Pop(var top: STACK; var x: tovar);
{Возвращает число из вершины стека и затем уничтожает вершину}
Var p: STACK;
begin
  if Empty(top)=False then begin
    p:= top^.next;     {запоминаем следующий узел}
    x:=top^.element;   {вытаскиваем инф-цию из вершины}
    dispose(top);      {уничтожаем вершину}
    top:=p;               {делаем p вершиной}
  end  else
     Writeln('стек уже пуст');
end;
 
procedure open(naf:string); //Процедура чтения из файла
   var
      txt:Text;
      x:tovar;
   begin
      Assign(txt,naf);
      Reset(txt);
      while not Eof(txt) do 
         begin
            readln(txt, x.dd);
            readln(txt, x.mm);
            readln(txt, x.gg);
            readln(txt, x.nazv);
            readln(txt, x.kol);
            readln(txt, x.cena);
            push(x,top);
         end;
      Close(txt);
      end;
      
procedure Scan(top: STACK);
  {Просмотр стека}
var
  p: Stack;   {вспомогательный указатель}
  x:tovar;
begin
  new(p);
  while top <> nil do begin  {пока не конец стека}
        p:= top^.next;     {запоминаем следующий узел}
    x:=top^.element;   {вытаскиваем инф-цию из вершины}
    dispose(top);      {уничтожаем вершину}
    top:=p; 
        write(x.dd:3);   {Вывод значения элемента}
        write(x.mm:3);
        write(x.gg:5);
        write(x.nazv:15);
        write(x.kol:3);
        write(x.cena:5);
        writeln;   
  end;
  writeln;
end;            {  Scan_Stack  }
 
Begin
Write('Введите название файла: ');
Readln(naf);
open(naf);
scan(Top);
writeln;
scan(Top);
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2019, 19:43
Ответы с готовыми решениями:

А вот что за стеки!
А вот что за стеки! Я про них почитала! А отражаются ли они как-то на внешнем виде самой программы,которую создаёшь!? Или где? Иными...

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при открытии программы\игры Фуллскрином. т.е...

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

7
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 12
01.06.2019, 19:49  [ТС]
Забыл добавить входной файл. В общем, вот он.
Вложения
Тип файла: txt i1.txt (313 байт, 1 просмотров)
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
02.06.2019, 07:17
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
type
  tovar = class
    dd:byte;    //День заказа
    mm:byte;    //Месяц заказа
    gg:integer;    //Год заказа
    nazv:string[20];   //Название товара
    kol:integer;   //Кол-во товара
    cena:real;   //цена товара
      
    constructor (a : array of String);
    begin
      dd := StrToInt(a[0]); mm := StrToInt(a[1]); gg := StrToInt(a[2]);
      nazv := a[3]; kol := StrToInt(a[4]); cena := StrToFloat(a[5]);
    end;
    
    function ToString := Format('{0:3} {1:3} {2:3} {3:-15} {4:3} {5:f2}', dd, mm, gg, nazv, kol, cena);
  end;
   
   STACK = class
     element:tovar;
     next: STACK;
     
     constructor (t : STACK; e : tovar);
     begin
       element := e; next := t;
     end;
   end; 
    
var 
  top : STACK := nil;
 
function Empty( top: STACK) := top = nil;
 
procedure Push(x: tovar; var top: STACK) := top := New STACK(top, x);
 
function Pop(var top: STACK) : tovar;
begin
  if Empty(top) then
    Result := nil
  else
    begin
      Result := top.element;
      top := top.next;
    end;
end;
 
procedure open(naf:string);
begin
   foreach var s in ReadLines(naf) do
     begin
       var a := s.ToWords;
       if a.Length = 6 then
         try
           var x := New tovar(a);
           push(x, top);
         except end;
     end;
end;
      
procedure Scan(top: STACK);
begin
  while top <> nil do
    begin
      WriteLn(top.element.ToString);
      top := top.next;
    end;
end;
 
Begin
  open('i1.txt');
  scan(Top);
  writeln;
  scan(Top);
end.
Только строки в файле я объединил:
07 09 2003 Ручка 60 2.3
11 12 2009 Карандаш 95 1.6
19 08 2000 Линейка 99 3.4
13 09 2003 Циркуль 70 5
09 02 2010 Корректор 64 4.1
19 08 2000 Книги 82 9.5
09 06 2013 Ластик 79 0.5
17 03 2010 Пенал 63 4.7
10 07 2008 Стержень 90 0.3
10 02 2011 Обложки 93 3.2
0
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 12
02.06.2019, 08:10  [ТС]
Извени, но мне нужна динамическая организация данных.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
02.06.2019, 14:12
Цитата Сообщение от Stasitschik Посмотреть сообщение
динамическая организация данных.
А это что, по вашему?
Связные списки - новый стиль

Кроме того, у вас ещё будут динамические массивы ;–)
1
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 12
02.06.2019, 14:18  [ТС]
Опять же извени, я условие забыл добавить. Задача по линейным односвязным спискам, плюс еще массивов не должно быть. Препод требует.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
02.06.2019, 14:23
Во-первых, „извИниТЕ“ — слово пишется через «И» и вы мне во внуки годитесь!
Во-вторых, а вы то хоть сами увидели где здесь массивы?
В-третьих, а разве это не на стеки задание? И разве стек не односвязным списком реализован?
0
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 12
02.06.2019, 14:34  [ТС]
Упс, ошибся заданием. Просто еще лекция по спискам открыта. Насчёт орфографии тоже напортачил.

Добавлено через 6 минут
Да, задача по стекам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2019, 14:34
Помогаю со студенческими работами здесь

И так, что не так с моим запросом на добавление записи в таблицу?
$sql = 'INSERT INTO product ' . '(name, code, price, category_id, brand, availability,' . 'description,...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float a,c; char b; skip: ...

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от 702 до 1000. Что ни так понимаю, где...

сегодня так можно сказать праздник так что...
простите меня за все пожалуйста!!!

Что не так, почему так происходит?
Вот bat файл @echo off for /f %%A in ('wmic path Win32_NetworkAdapter where &quot;PNPDeviceID like '%%VID_22C3&amp;PID_55FF%%'&quot; get Index...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
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
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru