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

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

24.04.2013, 16:45. Показов 1313. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста переделать эту программу так, что бы стеки брались из двух файлов, и формировался третий стек и выводился на экран
Вот как звучит само задание:
Из двух стеков равной длины с вещественными числами создать один стек с квадратами значений элементов исходных стеков, изменив связи между элементами (не выделяя новую память) и изменив их значения. При создании нового стека элементы брать по-очереди, по одному элементу из каждого стека.
program pro;

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
type
 
  TPElem = ^TElem;
  TElem = record
    Data : Integer;
    PNext : TPElem;
  end;
 
procedure StackPush(var aPStack, aPElem : TPElem);
begin
  aPElem^.PNext := aPStack;
  aPStack := aPElem;
end;
 
function StackPop(var aPStack, aPElem : TPElem) : Boolean;
begin
  Result := False;
  if aPStack = nil then Exit;
  aPElem := aPStack;
  aPStack := aPElem^.PNext;
  Result := True;
end;
 
procedure StackFree(var aPStack : TPElem);
var
  PDel : TPElem;
begin
  while aPStack <> nil do begin
    PDel := aPStack;
    aPStack := aPStack^.PNext;
    Dispose(PDel);
  end;
end;
 
const
  M = 10;
var
  PSt1, PSt2, PSt3, PElem : TPElem;
  i, NumMax, NumMin : Integer;
  S : String;
begin
  repeat
   
    PSt1 := nil;
    PSt2 := nil;
    PSt3 := nil;
    
    for i := 1 to M do begin
      New(PElem);
   PElem^.Data := random(100)-50; 
      StackPush(PSt1, PElem);
    end;
    
    Writeln('Содержимое первого стека:');
   while StackPop(PSt1, PElem) do begin
      StackPush(PSt3, PElem);
      Write(PElem^.Data,',');
    end;
    Writeln;
    while StackPop(PSt3, PElem) do StackPush(PSt1, PElem);
  for i := 1 to M do begin
      New(PElem);
    PElem^.Data := random(100)-50; 
     StackPush(PSt2, PElem);
    end;
    //Распечатка и переливание из второго стека в третий стек.
    Writeln('Содержимое второго стека:');
    while StackPop(PSt2, PElem) do begin
        StackPush(PSt1, PElem);
        Write(PElem^.Data,',');
    end;
       while StackPop(PSt1, PElem) do begin
      if PElem^.Data > 0 then StackPush(PSt3, PElem); 
      end;
    Writeln;
   //Переливаем элементы из третьего стека обратно - во второй стек.
    while StackPop(PSt3, PElem) do StackPush(PSt2, PElem);
 //Третий стек.
    //Переливаем из второго стека в третий только те элементы,
    //которые не равны минимальному.
    while StackPop(PSt2, PElem) do begin
      if PElem^.Data > 0 then StackPush(PSt3, PElem);
    end;
  //Распечатка элементов третьего стека.
    //При этом, стек очищается.
    Writeln('Содержимое третьего стека:');
    i := 0;
    while StackPop(PSt3, PElem) do begin
      Inc(i);
      if i > 1 then Write(', ');
      Write(PElem^.Data);
    end;
    Writeln;
    while StackPop(PSt3, PElem) do begin
      if PElem^.Data < 0 then StackPush(PSt1, PElem);
    end;
    while StackPop(PSt3, PElem) do begin
      if PElem^.Data > 0 then StackPush(PSt2, PElem);
    end;
     //Удаление стеков из памяти.
    StackFree(PSt1);
    StackFree(PSt2);
    StackFree(PSt3);
    Readln(S);
  until S <> '';
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2013, 16:45
Ответы с готовыми решениями:

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

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

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

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2013, 16:45
Помогаю со студенческими работами здесь

Переливание нечётных элементов из двух стеков в стек
У нас есть два стека, получаемых из файлов (Stack1.bat и Stack2.bat), нужно перелить нечётные...

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

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

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


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

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

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