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

Создать новый стек, содержащий только четные числа из первого стека

28.06.2016, 15:40. Показов 2490. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот программа создания стека.

C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <stack.h>
#pragma hdrstop
 
 
 
#include "Stak1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
struct Stack{
 int number;
 Stack *nextnum;
 } *topnum,*temp;
 
Stack* AddStack(Stack*,int);
void View(Stack*);
void DelStack(Stack**);
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Clear();
Memo1->Clear();
}
//------------------Create stack---------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int i, in, n = StrToInt(Edit1->Text);
        if(topnum!= NULL){
                return;
        }
        for(i = 1; i <= n; i++){
                in = random(100)-50;
                topnum = AddStack(topnum, in);
        }
        Memo1->Lines->Add("--- Elements of stack ---");
        View(topnum);
}
//----------------- Create new stack with even number from old stack---------
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if (topnum != NULL) DelStack(&topnum);
Memo1->Clear();
}
//---------------------------------------------------------------------------
Stack* AddStack(Stack *p, int in) {
        Stack *temp = new Stack;
        temp -> number = in;
        temp -> nextnum = p;
        return temp;
}
//----------------- ----------------------------------
void View(Stack *p) {
        Stack *temp = p;
        while( temp != NULL) {
        Form1->Memo1->Lines->Add("   " + IntToStr( temp->number));
        temp=temp->nextnum;
        }
}
//---------------------------------------------------------------------------
void DelStack(Stack **p)   {
        Stack *temp;
         while( *p != NULL) {
          temp = *p;
           *p = (*p) -> nextnum;
        delete temp;
        }
}
//---------------------------------------------------------------------------
 
void DelOddNumbers(Stack* p, int *out)   {
    Stack *temp = p;
    *out = p -> number;
    p = p -> nextnum;
    if(temp&1){
    delete temp;
    }
    return p;
}
//----------------------------------------------------------------------------
Не могу понять, как сделать новый стек на содержащий только чётные числа из старого, помогите пожалуйста.

Добавлено через 22 часа 18 минут
Up теме. Помогите плиз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2016, 15:40
Ответы с готовыми решениями:

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

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

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

Преобразовать стек в два стека - первый должен содержать только чётные числа, второй — только нечётные
Здравствуйте!! Нужно создать стек в диапазоне -50 до 50.Преобразовать стек в два стека.Причем,...

2
1406 / 569 / 127
Регистрация: 31.10.2011
Сообщений: 1,957
01.07.2016, 01:04 2
Kormak, в коде не разбирался, но у структуры и класса могут быть функции.
Класс лучше )))
Просто раз уж с++, то ...

деление на 2 проверяй остатком от деления, например x%2
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
01.07.2016, 15:39 3
Kormak, два варианта:
1) копируешь имеемый стек в новый и удаляешь нечётные числа [DelOddNumbers]
2) просматриваешь числа имеемого стека и добавляешь в новый только чётные
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2016, 15:39
Помогаю со студенческими работами здесь

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

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

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

Преобразовать стек в два стека. Первый должен содержать только четные числа, а второй – нечетные
Сессия грядет , ребята выручайте! 2. Сформировать динамический список (стек), считая, что длина...


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

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

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