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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
07.11.2012, 14:30     Стек записи на основе статического массива типа запись #1
Добрый вечер!

Помогите пожалуйста выполнить задание:
Создать стек записи Спортсмен на основе статического массива типа запись.

Заранее, очень вам благодарен!

Добавлено через 34 минуты
Реализовать методы : Добавить элемент, удалить элемент, вершина стека.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Oberok
 Аватар для Oberok
5 / 5 / 0
Регистрация: 11.03.2011
Сообщений: 40
07.11.2012, 14:36     Стек записи на основе статического массива типа запись #2
Цитата Сообщение от SuLLeN Посмотреть сообщение
Добрый вечер!

Помогите пожалуйста выполнить задание:
Создать стек записи Спортсмен на основе статического массива типа запись.

Заранее, очень вам благодарен!

Добавлено через 34 минуты
Реализовать методы : Добавить элемент, удалить элемент, вершина стека.
Что собой представляет запись "Спортсмен", это структура или просто фамилия.
Я так понимаю, что это должен быть стек "Спортсменов", с указанными вами функциями. Так ?
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
07.11.2012, 15:40  [ТС]     Стек записи на основе статического массива типа запись #3
Было 2 задания:

1. Создать запись Спортсмен: ФИО, Вид_спорта, факультет, специальность – строки, возраст(количество полных лет) – целое число. Написать программу, реализующую следующее меню:
• добавить элемент в файл
• удалить элемент из файла
• принадлежность элемента файлу
• вывод всех записей на экран

2. Создать стек записи Спортсмен на основе статического массива типа запись. Реализовать методы : Добавить элемент, удалить элемент, вершина стека.

Исходя из первого, скорее всего, так.

Добавлено через 22 минуты
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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
const int N=4;
 
struct STACK 
{
int arr[N];
int count;
};
 
void Initial(STACK *ps)
{
ps->count=0;
}
 
int Empty(STACK *ps)
{
if (ps->count==0)
return 1;
else
return 0;
}
 
int Full(STACK *ps)
{
if (ps->count==N)
return 1;
else
return 0;
}
 
void Add(STACK *ps)
{
ps->arr[ps->count]=rand()%100; 
ps->count++;
}
 
void Del(STACK *ps)
{
ps->count–1;
}
 
void Show(STACK *ps)
{
for ( int i=0;i<ps->count;i++) 
cout << ps->arr[i] << " ";
}
 
int main()
{
setlocale(LC_ALL,"Russian"); 
STACK s; 
Initial(&s); 
char otv; 
do 
{
cout << "1. ÄîáГ*âëåГ*ГЁГҐ ýëåìåГ*ГІГ* Гў âåðøèГ*Гі Г±ГІГҐГЄГ*" << endl 
<< "2. ÓäГ*ëåГ*ГЁГҐ ýëåìåГ*ГІГ* ГЁГ§ âåðøèГ*Г» Г±ГІГҐГЄГ*" << endl
<< "3. Âûâåñòè ýëåìåГ*ГІГ» Г±ГІГҐГЄГ*" << endl
<< "4. ÏðîâåðêГ* ïóñòîòû Г±ГІГҐГЄГ*" << endl
<< "5. ÏðîâåðêГ* Г§Г*ïîëГ*ГҐГ*Г*îñòè Г±ГІГҐГЄГ*" << endl
<< "0. Âûõîä" << endl
<< " = ";
cin >> otv;
switch(otv)
{
case 1 :
 
if (Full(&s)==1)
cout << endl << "Ñòåê ïîëГ*ûé" << endl;
else
{
Add(&s);
cout << endl << "ÝëåìåГ*ГІ äîáГ*âëåГ* Гў Г±ГІГҐГЄ" << endl;
}
break;
 
case 2 ?:
 
if (Empty(&s)==1)
cout << endl << "Ñòåê ïóñò" << endl;
else 
{
Del(&s);
cout << endl << "ÝëåìåГ*ГІ ГіГ¤Г*ëåГ* ГЁГ§ Г±ГІГҐГЄГ*" << endl;
}
break;
 
case 3 :
 
if (Empty(&s)==1)
cout << endl << "Ñòåê ïóñò" << endl;
else
{
cout << endl << "ÝëåìåГ*ГІГ» Г±ГІГҐГЄГ*" << endl;
Show(&s);
cout << endl;
}
break;
 
case 4 :
 
if (Empty(&s)==1)
cout << endl << "Ñòåê ïóñò" << endl;
else 
cout << endl << "Г‚ Г±ГІГҐГЄГҐ " << s.count << " ýëåìåГ*ГІГ*" << endl;
break;
 
case 5 :
 
if (Full(&s)==1)
cout << endl << "Ñòåê ïîëГ*ûé" << endl;
else 
cout << endl << "Г…Г±ГІГј âîçìîæГ*îñòü äîáГ*ГўГЁГІГј " << N-s.count << " ýëåìåГ*òîâ" << endl;
break;
 
case 0 :
 
break;
 
default:
 
cout << endl << "ГЋГёГЁГЎГЄГ*" << endl;
break;
 
}
 
}while(otv!=0?);
cin.get();
 
}
Только работать не хочет...

Добавлено через 37 минут
Народ, помогите пожалуйста!
Oberok
 Аватар для Oberok
5 / 5 / 0
Регистрация: 11.03.2011
Сообщений: 40
07.11.2012, 17:03     Стек записи на основе статического массива типа запись #4
Раз тебя интересует только вторая задача, то первую ты по идее уже сделал. Вот попробуй этот код, я его сделал в виде шаблона, так что в него можно вставлять любой тип данных и твоего Спортсмена тоже, так что создавай 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 приведены некоторые тестовые данные.
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
07.11.2012, 18:13  [ТС]     Стек записи на основе статического массива типа запись #5
Спасибо, но вообще ничего не понятно.
Yandex
Объявления
07.11.2012, 18:13     Стек записи на основе статического массива типа запись
Ответ Создать тему
Опции темы

Текущее время: 13:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru