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

Из двух стеков с целыми числами создать новый стек из элементов первого стека, которых нет во втором

12.12.2017, 21:49. Показов 1105. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста написать код теме: Реализация стека и основных алгоритмов его обработки.
Задание звучит так: Из двух стеков с целыми числами создать новый стек из элементов первого стека, которых нет во втором стеке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2017, 21:49
Ответы с готовыми решениями:

Из двух заданных стеков, хранящих символы, создать новый стек из тех символов первого стека, которые есть и в первом
Из двух заданных стеков, хранящих символы, создать новый стек из тех символов первого стека,...

Из двух стеков, хранящих слова, создать новый стек элементов, у которых первая и последняя буква совпадают
Из двух стеков, хранящих слова, создать новый стек, у которых первая и последняя буква совпадают....

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

Создать новый стек, содержащий только те числа из первого стека, которые больше среднего значения всех элементов первого
Общая часть: Создать стек для хранения чисел, значение которых случайно в диапазоне от –50 до +50....

3
5056 / 2630 / 2345
Регистрация: 10.12.2014
Сообщений: 9,993
13.12.2017, 07:00 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
begin
  Randomize;
  Write('Stack a: '); var a := New Stack<integer>; loop 10 do a.Push(Random(10)); a.Println;
  Write('Stack b: '); var b := New Stack<integer>; loop 10 do b.Push(Random(10)); b.Println;
  var c := New Stack<integer>;
  foreach var v in a do
    begin
      if b.ToArray.IndexOf(v) < 0 then c.Push(v);
    end;
  Write('Stack c: '); c.Println;
end.
0
0 / 0 / 1
Регистрация: 04.12.2017
Сообщений: 24
18.12.2017, 11:29  [ТС] 3
Данный код не подходит.
Можно ли сделать на подобии этого?
Создать стек со случайными целыми числами. Удалить все элементы, равные первому
0
0 / 0 / 1
Регистрация: 04.12.2017
Сообщений: 24
20.12.2017, 01:19  [ТС] 4
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
//6.    Из двух стеков с целыми числами создать новый стек из элементов первого стека, которых нет во втором стеке.
Program aaa;
uses crt;
type
  elementPointer = ^stackElement;
  stackElement = record
    value: integer;
    nextElement: elementPointer;
  end;
  
 
procedure push(var stackTop: elementPointer; element: integer);// Добавляет элемент в начало стека
var
  newElementPointer: elementPointer;
begin
  new(newElementPointer);
  newElementPointer^.value := element;
  newElementPointer^.nextElement := stackTop;
  stackTop := newElementPointer;
end;
 
 
function pop(var stackTop: elementPointer): integer;//Удаляет элемент из стека
begin
  Result := stackTop^.value;
  stackTop := stackTop^.nextElement;
end;  
 
 
procedure printElements(stackTop: elementPointer);// Вывод элементов стека
var
  previousElementPointer: elementPointer;
begin
  if stackTop = nil then
    WriteLn('Stack is empty')
  else
    begin
      previousElementPointer := stackTop;
      while(previousElementPointer <> nil) do
        begin
          write(previousElementPointer^.value, ' ');
          previousElementPointer := previousElementPointer^.nextElement;
      end;
  end;
  WriteLn();
end;
 
 
procedure fillStack(var stackTop: elementPointer);// Заполнение стека элементами
var
  stackSize,
  element: integer;
begin
  stackTop := nil;
  WriteLn('Размер стека: ');
  ReadLn(stackSize);
  for var i := 1 to stackSize do begin
    write('Введите значения: ');
    ReadLn(element);
    push(stackTop, element);
  end;
end;
 
 
function isContained(stack: elementPointer; const pointerToFind: elementPointer): boolean;//Проверяет, является ли элемент, содержащийся в стеке
var
  currentPointer: elementPointer;
begin
  currentPointer := stack;
  Result := false;
  while (currentPointer <> nil) do
    begin
      if currentPointer^.value = pointerToFind^.value then
        begin
          Result := true;
          break;
        end  
      else
        begin
          currentPointer := currentPointer^.nextElement;
        end  
    end;
end;
 
 
function filterStack(const firstStack, secondStack: elementPointer): elementPointer;// Фильтрует первый стек на основе значений во втором стеке
var
  currentPointer,
  filteredStack: elementPointer;
begin
  filteredStack := nil;
  currentPointer := firstStack;
  while (currentPointer <> nil) do
    begin
      if not isContained(secondStack, currentPointer) then
        begin
          push(filteredStack, currentPointer^.value);
        end;
      currentPointer := currentPointer^.nextElement;
    end;
  Result := filteredStack;
end;
 
 
var
  oneStack,
  twoStack,
  filteredStack: elementPointer;
begin
  fillStack(oneStack);
  fillStack(twoStack);
  printElements(oneStack);
  printElements(twoStack);
  
  filteredStack := filterStack(oneStack, twoStack);
  printElements(filteredStack);
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2017, 01:19
Помогаю со студенческими работами здесь

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

Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека
Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека....

Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека
Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека....

Создать массив из элементов первого массива, которых нет во втором массиве
На основе исходных массивов A и B (n и m – рабочие размеры массивов) сформировать массив C, который...


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

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

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