Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
#1

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

07.11.2012, 14:30. Просмотров 1466. Ответов 4
Метки нет (Все метки)

Добрый вечер!

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

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

Добавлено через 34 минуты
Реализовать методы : Добавить элемент, удалить элемент, вершина стека.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 14:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стек записи на основе статического массива типа запись (C++):

Стек на основе статического массива - C++
Здравствуйте! Помогите пожалуйста выполнить задание. Сама уже весь форум облазила и нужного не нашла. Создать стек записи...

Создать стек целых чисел на основе статического массива. - C++
Создать стек целых чисел на основе статического массива. Реализовать методы : Добавить элемент, удалить элемент, вершина стека. На...

Стек на основе статического массива: вставить число, учитывая сортировку - C++
всем привет. помогите решить проблему с методом pushOrder(). Его суть в том, что бы вставить число учитывая сортировку массива. ...

Стек на базе статического массива - C++
Здравствуйте помогите, верней напишите за меня пожалуйста стек на базе статического массива. требования для массива: 1)тип элементов -...

Очередь на основе статического массива - C++
в очередь с экрана вводятся строки,когда вводится строка end,элементы извлекаются из очереди и записываются в файл. xD.h #include...

Очередь на основе динамического (статического) массива - C++
Задание следующее: Абстрактный класс (интерфейс) - это у меня очередь Дочерние/производные классы (драйверы) - 1)Очередь на основе...

4
Oberok
5 / 5 / 0
Регистрация: 11.03.2011
Сообщений: 40
07.11.2012, 14:36 #2
Цитата Сообщение от SuLLeN Посмотреть сообщение
Добрый вечер!

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

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

Добавлено через 34 минуты
Реализовать методы : Добавить элемент, удалить элемент, вершина стека.
Что собой представляет запись "Спортсмен", это структура или просто фамилия.
Я так понимаю, что это должен быть стек "Спортсменов", с указанными вами функциями. Так ?
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
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 минут
Народ, помогите пожалуйста!
0
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 приведены некоторые тестовые данные.
1
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
07.11.2012, 18:13  [ТС] #5
Спасибо, но вообще ничего не понятно.
0
07.11.2012, 18:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 18:13
Привет! Вот еще темы с ответами:

Стек на основе массива - C++
Банально: создать, добавить, удалить. Без своих &quot;написаний&quot; никак, дело в том, что впритык не хочет реагировать на &quot;next&quot;! #include...

Стек на основе динамического массива - C++
Надо написать стек на основе динамического массива. Как выделить память под новый элемент? template &lt;typename T&gt; void...

Помогите реализовать стек на основе массива - C++
помогите с задачачей по с++ 3. Реализуйте стек на основе массива.

Написать стек на основе одномерного массива - C++
Пробую написать стек на основе одномерного массива. Скажите что не так делаю. #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru