,   CyberForum.ru

- C++

 
:  :  - 30,   - 4.67
OzyRus
   OzyRus
0 / 0 / 0
: 18.11.2012
: 5
18.11.2012, 11:03     #1
!

.
.

.
: , , .
Similar
41792 / 34177 / 6122
: 12.04.2006
: 57,940
18.11.2012, 11:03    
:

C++
. C++
C++
C++
- ! C++
.
MrGluck
 ++
   MrGluck
4920 / 2663 / 243
: 29.11.2010
: 7,413
18.11.2012, 16:47     #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
#include <iostream>
#include <cstddef>
#include <string>
 
class Teacher
{
    public:
        Teacher() {}
        Teacher(std::string name, std::string surname):
            _name(name), _surname(surname) {}
        void set(std::string name, std::string surname)
        {
            _name = name;
            _surname = surname;
        }
        friend std::ostream& operator<< (std::ostream &output, const Teacher &t)
        {
            output<< "Name: "<< t._name<< std::endl
                  << "Surname: "<< t._surname<< std::endl;
            return output;
        }
    private:
        std::string _name, _surname;
};
 
 
class MyStack
{
    public:
        MyStack(): counter(0) {}
        void push(const Teacher &el)
        {
            if (counter < N) t[counter++] = el;
        }
        void pop()
        {
            if (counter > 0) counter--;
        }
        const std::size_t size() const {return counter; }
        bool empty() {return counter == 0; }
        const Teacher& top() const
        {
            if (counter > 0) return t[counter - 1];
        }
    private:
        enum {N = 10 };
        Teacher t[N];
        std::size_t counter;
};
 
 
 
 
int main()
{
    MyStack s;
    s.push (Teacher ("Ivan", "Petrov"));
    s.push (Teacher ("Vladimir", "Voronov"));
    while (!s.empty())
    {
        std::cout<< s.top()<< std::endl;
        s.pop();
    }
    return 0;
}
OzyRus
   OzyRus
0 / 0 / 0
: 18.11.2012
: 5
18.11.2012, 19:34  []     #3
: : , ,
SuLLeN
   SuLLeN
21 / 21 / 4
: 27.12.2011
: 767
18.11.2012, 19:37     #4
...

PHP
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <iostream>
#define MAX 15
 
using namespace std;
 
char *stack[MAX]; // Ì*ññèâ äëÿ ñòåê*
int tos=0; // Äëÿ âåðøè*û ñòåê*
 
void push(char *i) // Ôó*êöèÿ äîá*âëå*èÿ ýëåìåò* â ñòýê
{
    if(tos >= MAX) // Ïðîâåðê* ** ç*ïîë*å**îñòü ñòåê*
    {
        cout << "Ñòåê ïîëî*!" << endl;
        return;
    }
    strcpy(stack[tos],i); // Ç*ïèñûâ*åì ñòðîêó â ñòýê
    tos = tos + 1; // Óâåëè÷èâ*åì âåðøè*ó ñòýê*
}
 
int size() // Äëÿ îïðåäåëå*èÿ ð*çìåð* ñòåê*
{
    if (tos >= 0) return tos;// Åñëè áîëüøå *óëÿ, òî âîçâð*ù*åì òåêóùåå ç**÷å*èå âåðøè*û ñòýê*
    else return 0; // è**÷å âîçâð*ù*åì *îëü
}
 
char *pop(void) // Ôó*êöèÿ âûò*ñêèâ**èÿ ýëåìå*ò* èç ãîëîâû
{
    char *str = new char[30]; // Áóôôåð
    tos = tos - 1; // Ñäâèã*åìñÿ îò ãîëîâû â*èç
    if(tos < 0) // Åñëè âåðøè** ìå*üøå *óëÿ, òî ñòýê ïóñòîé
    {
        cout << "Ñòåê ïóñò!" << endl;
        return 0;
    }
    strcpy(str, stack[tos]); //è**÷å â áóôôåð ïîìåø*åì òåêóùåå ç**÷å*èå âåðøè*û
    return str; // âåçâð*ù*åì ýòî ç**÷å*èå
}
 
void delet(char *element) // Ôó*êöèÿ óä*ëå*èÿ
{
    int razmer = size(); // Ïîëó÷*åì ð*çìåð*îñòü ñòåê*
    char *buf[MAX]; // Äëÿ áóôôåð*, èñ÷ïîëüçóåòñÿ ïðè óä*ëå*èè
    for(int i = 0;i<MAX;i++) // ÂÛäåëå*èå ï*ìÿòè
    {
        buf[i] = new char[30];
    }
    int c = 0; // Ñ÷åò÷èêè
    int ravn = 0;
    for(int i = 0;i<=size();i++) // Öèêë äëÿ óä*ëå*èÿ
    {
        /*Ïðîâåðÿåì,åñëè *å ð*â*û ýëåìå*ò èç
        ñòåê* è ýëåìå*ò ââåäåä*ûé ñ êë*âè*òóðû,
        òî êîïèðóåì â áóôôåð
        óâåëè÷èâ*åì ñ÷åò÷èê
        è óä*ëÿåì ïîë*îñòüþ ä***óþ ÿ÷åêó èç ñòåê**/
        if (strcmp(element,stack[i])!=0)
        {
            strcpy(buf[c],stack[i]);
            c = c + 1;
            delete stack[i];
        }
        else //è**÷å ïðîñòî óä*ëÿåì ïîë*óñòüþ ÿ÷åéêó èç ñòåê*
        {
            delete stack[i];
            ravn = ravn + 1;
        }
    }
    tos=0;
    /*Âûäåëÿåì ï*ìÿòü äëÿ ñòåê*, ò*ê ê*ê î** áûë*
    óä*ëå**
    è êë*äåì â ñòåê ç**÷å*èÿ*/
    for (int i=0;i<=(razmer-ravn);i++)
    {
        stack[i] = new char[30];
        push(buf[i]);
    }
}
 
int main() // Îc*îâ*îå òåëî ïðîãð*ììû
{
    system("chcp 1251");
    setlocale(0, "rus");
    
    for (int i = 0;i<MAX;i++) // Âûäåëå*èå ïï*ìÿòè äëÿ ýëåìå*òîâ ñòýê
    {
        stack[i] = new char[30];
    }
    char *Element = new char[30]; // Äëÿ ââîä* ýëåìå*ò* äëÿ óä*ëå*èÿ
    
    cout << "Ââîä ýëåìå*òîâ" << endl;
    
    cout << "Èìÿ: ";
    cin >> Element;
    push(Element);
    cout << "Âèä ñïîðò*: ";
    cin >> Element;
    push(Element);
    cout << "Ô*êóëüòåò: ";
    cin >> Element;
    push(Element);
    cout << "Ñïåöè*ëü*îñòü: ";
    cin >> Element;
    push(Element);
    cout << "Âîçð*ñò: ";
    cin >> Element;
    push(Element);
    
    cout << "Âåðøè** ñòåê*: " << pop() << endl; // Ââîä ýëåìå*ò* äëÿ óä*ëå*èÿ
    cout << "Ê*êîé ýëåìå*ò óä*ëèòü? (âïèøèòå åãî): ";
    char *ItemToDelete = new char[30];
    cin >> ItemToDelete;
    delet(ItemToDelete); // Óä*ëå*èå ýëåìå*ò*
    cout <<"Âåðøè** ñòåê*: " << pop() << endl << endl; // Ïå÷*òü òåêóùåé âåðøè*û ñòåê*
    cout << "Ê*êîé ýëåìå*ò óä*ëèòü? (âïèøèòå åãî): ";
    cin >> ItemToDelete;
    delet(ItemToDelete); // Óä*ëå*èå ýëåìå*ò*
    cout <<"Âåðøè** ñòåê*: " << pop() << endl << endl; // Ïå÷*òü òåêóùåé âåðøè*û ñòåê*
    cout << "Ê*êîé ýëåìå*ò óä*ëèòü? (âïèøèòå åãî): ";
    cin >> ItemToDelete;
    delet(ItemToDelete); // Óä*ëå*èå ýëåìå*ò*
    cout <<"Âåðøè** ñòåê*: " << pop() << endl << endl; // Ïå÷*òü òåêóùåé âåðøè*û ñòåê*
    cout << "Ê*êîé ýëåìå*ò óä*ëèòü? (âïèøèòå åãî): ";
    cin >> ItemToDelete;
    delet(ItemToDelete); // Óä*ëå*èå ýëåìå*ò*
    cout <<"Âåðøè** ñòåê*: " << pop() << endl << endl; // Ïå÷*òü òåêóùåé âåðøè*û ñòåê*
    cout << "Ê*êîé ýëåìå*ò óä*ëèòü? (âïèøèòå åãî): ";
    cin >> ItemToDelete;
    delet(ItemToDelete); // Óä*ëå*èå ýëåìå*ò*
    cout << pop();
    
    system("PAUSE");
}
.
MrGluck
 ++
   MrGluck
4920 / 2663 / 243
: 29.11.2010
: 7,413
18.11.2012, 19:38     #5
OzyRus
: : , ,
: - push(), - pop(), - top(), + size() - empty() -
OzyRus
   OzyRus
0 / 0 / 0
: 18.11.2012
: 5
18.11.2012, 19:44  []     #6
! , ( ).
MoreAnswers
37091 / 29110 / 5898
: 17.06.2006
: 43,301
18.11.2012, 20:10    
:

C++
C++
C++



:
MrGluck
 ++
   MrGluck
4920 / 2663 / 243
: 29.11.2010
: 7,413
18.11.2012, 20:10     #7
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
#include <iostream>
#include <cstddef>
#include <string>
 
class Teacher //   Teacher
{
    public:
        Teacher() {} //   
        Teacher(std::string name, std::string surname): //  ,        std::string,   
            _name(name), _surname(surname) {} //   
        void set(std::string name, std::string surname) //  set,   
        {
            _name = name;
            _surname = surname;
        }
        friend std::ostream& operator<< (std::ostream &output, const Teacher &t) //      ostream.   <<
        {
            output<< "Name: "<< t._name<< std::endl //    
                  << "Surname: "<< t._surname<< std::endl;
            return output; //     std::ostream
        }
    private: //  
        std::string _name, _surname; //  
};
 
 
class MyStack
{
    public:
        MyStack(): counter(0) {} //  .   counter .
        void push(const Teacher &el) //  push ( ).          Teacher
        {
            if (counter < N) t[counter++] = el; //   counter  N,   (  t   counter     ),    1
        }
        void pop() //    
        {
            if (counter > 0) counter--; //   0,     1
        }
        const std::size_t size() const {return counter; } //  counter (   )
        bool empty() {return counter == 0; } //  ,   -  0,  
        const Teacher& top() const //     (   ,    - 1 (..    0)
        {
            if (counter > 0) return t[counter - 1]; //    0,   
        }
    private:
        enum {N = 10 }; // ,    N,  10
        Teacher t[N]; //     Teacher  N
        std::size_t counter; // 
};
 
 
 
 
int main()
{
    MyStack s; //    MyStack
    s.push (Teacher ("Ivan", "Petrov")); //      Teacher,   ,       
    s.push (Teacher ("Vladimir", "Voronov")); // 
    while (!s.empty()) //    
    {
        std::cout<< s.top()<< std::endl; //     
        s.pop(); //    
    }
    return 0; //   
}
Yandex
18.11.2012, 20:10    

: 18:41. GMT +3.
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
@Mail.ru