1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 116
1

Разработать статический стек длиной 8 элементов, тип данных: string

12.03.2014, 00:54. Показов 1838. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем. Помогите найти ошибки в следующей задаче:
1. Разработать статический стек длиной 8 элементов, тип данных: string. Я сделал динамический. Как переделать в статический?
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
Program DynStek;
uses
  crt; 
type
  Tinf=string;
  List=^TList; 
  TList=record 
    data:TInf;  
    next:List;   
  end;
 
{Процедура добавляющая элемент в стек}
procedure AddElem(var stek1:List;znach1:TInf);
var
  tmp:List;
begin
  GetMem(tmp,sizeof(TList)); 
  tmp^.next:=stek1;  
  tmp^.data:=znach1; 
  stek1:=tmp; 
end;
 
{Процедура вывода стека}
procedure Print(stek1:List);
begin
  if stek1=nil then 
  begin
    writeln('Стек пуст.');
    exit;
  end;
  while stek1<>nil do 
  begin  
    Write(stek1^.data, ' '); 
    stek1:=stek1^.next  
  end;
end;
 
{Поиск элемента в стеке по значению}
Function SearchElemZnach(stek1:List;znach1:TInf):List;
begin
  if stek1<>nil then 
    while (Stek1<>nil) and (znach1<>stek1^.data) do 
      stek1:=stek1^.next; 
  SearchElemZnach:=stek1;
end;  
 
       
var
  Stk, 
  tmpl:List; 
  znach:Tinf; 
  ch:char; 
begin
    Stk:=nil;
    repeat 
    clrscr; 
    Writeln('Выберите действие:');
    Writeln('1) Добавить элемент.');
    Writeln('2) Вывод стека.');
    Writeln('3) Поиск элемента по значению');
    Writeln('4) Выход.');
    writeln;
    ch:=readkey; 
    case ch of 
      '1':begin
            write('Введите значение добавляемого элемента: ');
            readln(znach); {считываем значение добавляемого нового элемент}
            AddElem(Stk,znach);
          end;
      '2':begin
            clrscr; 
            Print(Stk); 
            readkey; 
          end;
 
      '3':begin
            write('Введите значение искомого элемента: ');
            readln(znach); {ввод искомого значения}
            tmpl:=SearchElemZnach(Stk,znach); 
            if tmpl=nil then 
              write('Искомый элемент отсутствует в стеке')
            else
              write('Элемент ',tmpl^.data,' найден');
            readkey;
          end;
until ch='4';
  FreeStek(Stk); 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2014, 00:54
Ответы с готовыми решениями:

Нельзя преобразовать тип Tuple<string,string,string,string> к string
Здравствуйте, у меня возникла проблема. При запуске кода, вылезает ошибка &quot;Нельзя преобразовать тип...

Перевод из числовых данных в тип данных string и обратно
Мне надо написать алгоритм с составными числами. Из пяти и шести чисел чтобы получилась сумма из...

Можно ли тип Collection<String> преобразовать в тип ArrayList<String>?
Добрый день ! Можно ли тип Collection&lt;String&gt; преобразовать в тип ArrayList&lt;String&gt; ...

тип данных string
дан набор слов и цифр. Нужно выделить в тексте только те числа, которые имеют только одно цифру......

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
12.03.2014, 02:49 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
Program StaticStack;
uses
  crt;
 
const
  BOS = 0; // bottom of stack
  TOS = 8; // top of stack
 
type
  Tinf=string;
  TStack = array[BOS + 1 .. TOS] of Tinf;
 
const
  CurrStack : Integer = BOS;
 
 
{Процедура добавляющая элемент в стек (с контролем переполнения) }
procedure AddElem(var s : TStack; Value : TInf);
begin
  if CurrStack < TOS then
  begin
    Inc(CurrStack);
    s[CurrStack] := Value
  end
  else
  begin
    writeln('stack overflow');
    readln;
  end;
end;
 
{Процедура вывода стека}
procedure Print(s : TStack);
var i : integer;
begin
  if CurrStack = BOS then
    write('<empty>')
  else
    for i := CurrStack downto BOS + 1 do
      write(s[i], ' ');
  writeln;
end;
 
{Поиск элемента в стеке по значению}
Function SearchElemZnach(s : TStack; value : TInf) : Integer;
var i : Integer;
begin
  SearchElemZnach := BOS;
  if CurrStack > BOS then
    for i := CurrStack downto BOS + 1 do
      if s[i] = value then
      begin
        SearchElemZnach := i; Break;
      end;
end;
 
 
var
  stack : TStack;
  found : integer;
  znach:Tinf;
  ch:char;
begin
  repeat
    clrscr;
    Writeln('Выберите действие:');
    Writeln('1) Добавить элемент.');
    Writeln('2) Вывод стека.');
    Writeln('3) Поиск элемента по значению');
    Writeln('4) Выход.');
    writeln;
    ch:=readkey;
    case ch of
      '1':begin
            write('Введите значение добавляемого элемента: ');
            readln(znach); {считываем значение добавляемого нового элемент}
            AddElem(stack, znach);
          end;
      '2':begin
            clrscr;
            Print(stack);
            readkey;
          end;
 
      '3':begin
            write('Введите значение искомого элемента: ');
            readln(znach); {ввод искомого значения}
            found:=SearchElemZnach(stack,znach);
            if found = BOS then
              write('Искомый элемент отсутствует в стеке')
            else
              write('Элемент ',stack[found],' найден');
            readkey;
          end;
    end;
  until ch='4';
end.
1
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 116
13.03.2014, 01:06  [ТС] 3
Спасибо. А как извлечь элемент из стека?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
13.03.2014, 01:23 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
// ...
            if CurrStack > BOS then
            begin
              znach := stack[CurrStack];
              Dec(CurrStack);
            end
            else
              writeln('stack underflow'); // попытка изъятия из пустого стека
1
13.03.2014, 01:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2014, 01:23
Помогаю со студенческими работами здесь

Тип Данных String
Помогите пожалуйста с написанием двух небольших программ в Delphi, заранее благодарю) 1.Даны два...

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

Строковый тип данных - string! TP
Ввести фамилию, имя и отчество как одно данное типа рядок. Определить длинну рядка и количество в...

тип данных string и char
const int m = 32; const int a = 32; string word; string azb = { {&quot;а&quot;,&quot;.-&quot; },...

Разработать тип данных
data File = DataFile String Integer | Folder String deriving Show startState = Folder &quot;Root&quot; ,...

Разработать тип данных
Разработать тип данных,представляющий ,что каждый файл либо содержит некоторые данные,либо включает...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru