Форум программистов, компьютерный форум CyberForum.ru

Стек записи на основе статического массива типа запись - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти наибольший элемент среди элементов главной и побочной диагонали http://www.cyberforum.ru/cpp-beginners/thread690964.html
Ребят помогите очень нужно пожалуйста !!! задачи по С++ 1 Найти наибольший элемент среди элементов главной и побочной диагонали и вывести на экран строку, в которой он находится. Определить, является ли матрица ортонормированной, т. е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а скалярное произведение каждой строки на себя равно 1.
C++ Будет ли продуктивно одновременно читать несколько книг по C++ Снова здравствуйте форумчане у меня возник к вам вопрос можно ли читать одновременно несколько книг по C++ ? И будет ли это полезно? Сейчас читаю "Программирование. Принципы и практика использования C++" стоит ли одновременно что то еше читать например прочитал в одной книге про ввод вывод а затем это же в другой(у каждого ведь изложение разное) или же это не будет продуктивно? http://www.cyberforum.ru/cpp-beginners/thread690962.html
C++ Не могу дописать программу преобразующую слова в цифры
Здравствуйте форумчане у меня есть к вам вопрос насчет одной программы. Задача: Напишите программу, преобразующую слова "нуль", "два" и т.д в цифры 0, 2 и т.д. Когда пользователь вводит число в виде слова, программа должна вывести на экран соответствующую цифру. Выполните эту программу для цифр 0, 1, 2, 3 и 4. Если пользователь введет что-нибудь другое например фразу "глупый компьютер!",...
Вычислить сумму C++
HELP ME!!! PLEASE!!!
C++ Можно ли это назвать пузырьковой сортировкой? http://www.cyberforum.ru/cpp-beginners/thread690939.html
int last = arraySize-1; while (last > 0) { int max = last; for (int i = 0; i <= last; i++) if (sort > sort) max = i; if (sort != sort) {
C++ Найти произведение ряда Очень нужно подробнее

Показать сообщение отдельно
Oberok
5 / 5 / 0
Регистрация: 11.03.2011
Сообщений: 40
07.11.2012, 17:03
Раз тебя интересует только вторая задача, то первую ты по идее уже сделал. Вот попробуй этот код, я его сделал в виде шаблона, так что в него можно вставлять любой тип данных и твоего Спортсмена тоже, так что создавай MyStak<Твой спортсмен> и вперед. Там реализованы все три функции и дополнительно еще оператор перегрузки [] для индексированного вывода и mySize, которая возвращает int - размер стека. Правда не гарантирую полную работоспособность так как сам еще новичек в этом... Пробуй )).

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
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
#include <string>
using std::string;
 
template<typename T>
class MyStack
{
  public:
    MyStack();
    void push( T );
    void pop();
    T top();
    T operator[](int);
    int mySize() const;
  private:
    int size; 
    T* stack;                    
};
 
template<typename T>
MyStack<T>::MyStack()
  :size(0)
{       
}                                           
 
template<typename T>
void MyStack<T>::push( T elem )
{ 
  if(size == 0)
  {     
    stack = new T[size];
    stack[size++] = elem;
  }
  else
  { 
   T tempMass[size];  
   
   for( int i = 0; i < size; ++i)
   {
     tempMass[i] = stack[i];  
   }     
     
   delete [] stack;
   stack = new T[++size];
   
   for( int i = 0; i < size; ++i)
   {
     stack[i] = tempMass[i];  
   } 
   
   stack[size-1] = elem;
  }                      
}
 
template<typename T>
void MyStack<T>::pop()
{
  if( size > 0 )
  { 
    --size;    
    T tempMass[size];  
    for( int i = 0; i < size; ++i )
    {
      tempMass[i] = stack[i];
    }
    delete [] stack;
    stack = new T[size];
    
    for( int i = 0; i < size; ++i )
      stack[i] = tempMass[i];
  }
  else 
  cout << "Stek pust." << endl;       
}   
 
template<typename T>
T MyStack<T>::top()
{
  if( size > 0 )                 
  return stack[size-1];    
  else if( size == 0 )
  cout << "Stek pust." << endl;
}   
 
template<typename T>
T MyStack<T>::operator[](int pos)
{   
  if( pos <= size - 1 )                          
  return stack[pos]; 
  else 
  cout << "Vihod za granici steka/" << endl;                          
}                               
 
template<typename T>
int MyStack<T>::mySize() const
{
  return size;  
}    
 
 
 
struct Sport
{ 
  int x;
};
 
int main()
{
   
   Sport a;
   a.x = 1;
   Sport b;
   b.x = 2;
   Sport c;
   c.x = 3;
   Sport d;
   d.x = 4;
   Sport e;
   e.x = 5;
   
   MyStack<Sport> sp;
   
   sp.push(a);
   sp.push(b);
   sp.push(c);
   sp.push(d);
   sp.push(e);
 
   cout << sp.top().x << endl;
   sp.pop();
   cout << sp.top().x << endl;
   sp.pop();
   cout << sp.top().x << endl;
   sp.pop();
   cout << sp.top().x << endl;
   sp.pop();
   cout << sp.top().x << endl;
   sp.pop();
   sp.pop();
 
 
  
   system("PAUSE");
   return 0;     
}
В main приведены некоторые тестовые данные.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru