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

Переливание нечётных элементов из двух стеков в стек

01.12.2015, 00:28. Показов 1213. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У нас есть два стека, получаемых из файлов (Stack1.bat и Stack2.bat), нужно перелить нечётные элементы (не по их позиции, а именно нечётные: 1,3,5 и т.д.) из 1 и 2 стека в 3. При этом оставив чётные в 1 и 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
type
  EXST = ^ST;
  ST = record
    Data: String[50];
    Next: EXST;
  End;
 
var
  Stack1: EXST;
  Stack2: EXST;
  Stack3: EXST;
  StackD: EXST;
  i: integer;
  f1,f2: text;
  Stroka: string;
 
{Чтение стека}  
procedure WriteStack(var u: EXST; Element: String[50]);
var
  x: EXST;
begin
  new(x); 
  x^.Data := Element; 
  x^.Next := u; 
  u := x; 
end;
 
{Вывод стека на экран}
procedure StackPrint( u: EXST);
begin
  while u <> nil do
  begin
    write(u^.Data);
    u := u^.Next;
  end;
end;
 
{Добавить элемент на вершину стека.}
 procedure StackPush(var aPStack, aPElem : EXST);
begin
 if aPElem = nil then Exit;
  aPElem^.Next := aPStack;
  aPStack := aPElem
end; 
 
{Изъятие элемента с вершины стека.}
function StackPop(var aPStack, aPElem : EXST) : Boolean;
begin
  StackPop := False;
  if aPStack = nil then {begin writeln('****');}Exit;//end;
  //writeln('@@@@@');
  aPElem := aPStack;
  aPStack := aPElem^.Next;
  StackPop := True;
end;
 
{Основная программа}
BEGIN
//begin
writeln('Элементы первого стека:');
  Stack1 := nil; 
  Assign(f1, 'C:\Stack 1.bat');
  Reset(f1);
  while not Eof(f1) do
  begin
    readln(f1, Stroka);
    for i := Length(Stroka) downto 1 do
      WriteStack(Stack1, Stroka[i]);
    //StackPrint(Stack1);
   // writeln;
  end;
  StackPrint(Stack1);
  writeln;
  close(f1);
 // end;
 {while StackPop(Stack1, Stack3) do StackPush(Stack2, Stack3);} 
//begin
  writeln('Элементы второго стека:');
  Stack2 := nil;
  Assign(f2, 'С:\Stack 2.bat');
  Reset(f2);
  while not Eof(f2) do
  begin
    readln(f2, Stroka);
    for i := Length(Stroka) downto 1 do
      WriteStack(Stack2, Stroka[i]);
    end;
    StackPrint(Stack2);
     writeln;
  close(f2);
//end;
 
//if (i mod 2)>0 then
while StackPop(Stack1, StackD) do StackPush(Stack3, StackD);
    Writeln('Переливание нечётных элементов из певого стека - в третий.');
    Write('Первый стек:');
    StackPrint(Stack1);
    writeln;
    Write('Третий стек:');
    StackPrint(Stack3);
    writeln;
    
    
//if (i mod 2)>0 then    
    while StackPop(Stack2, StackD) do StackPush(Stack3, StackD); 
    Writeln('Переливание из второго стека - в третий.');
    Write('Второй стек:');
    StackPrint(Stack2);
    writeln;
    Write('Третий стек:');
    StackPrint(Stack3);
    writeln;
 
END.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2015, 00:28
Ответы с готовыми решениями:

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

Из двух стеков с целыми числами создать новый стек из элементов первого стека, которых нет во втором
Здравствуйте. Помогите пожалуйста написать код теме: Реализация стека и основных алгоритмов его...

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

Последовательное хранения двух стеков в массиве из N элементов с условием(первая половина - 1 стек, вторая половина - 2)
Доброго времени. Не могу понять как сделать часть задания с размещением 2 стеков в массиве и как...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32793 / 21133 / 8144
Регистрация: 22.10.2011
Сообщений: 36,393
Записей в блоге: 8
01.12.2015, 12:39 2
Лучший ответ Сообщение было отмечено VZ27 как решение

Решение

Нужен доп. стек:
Pascal
1
2
3
4
5
6
7
8
9
var
  T: exst := nil;
{Основная программа}
// ...
 
  while StackPop(Stack1, StackD) do
    if Odd(StrToInt(StackD^.Data)) then StackPush(Stack3, StackD) // Нечетный элемент? Пишем его сразу в stack3
    else StackPush(T, StackD); // Четный? Временно сохраняем в другом стеке
  while StackPop(T, StackD) do StackPush(Stack1, StackD); // А теперь все содержимое временного стека вернем в первый
Со Stack2 - аналогично.
1
0 / 0 / 1
Регистрация: 25.04.2015
Сообщений: 52
01.12.2015, 22:43  [ТС] 3
Пишет такую ошибку((
Миниатюры
Переливание нечётных элементов из двух стеков в стек  
0
0 / 0 / 1
Регистрация: 25.04.2015
Сообщений: 52
01.12.2015, 22:56  [ТС] 4
Всё, вопрос отпал, спасибо большое)
0
01.12.2015, 22:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2015, 22:56
Помогаю со студенческими работами здесь

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

Объединить числа из двух стеков в третий стек
Всем привет! Столкнулась с такой проблемой - у меня есть два стека с числами (stack1, stack2), уже...

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

Как создать указатель на вершину стека ? Объединить числа из двух упорядоченных стеков в третий упорядоченный стек
Всем привет . Как в С# создать указатель который указывает на вершину стека ? прошу максимально...

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

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


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

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

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