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

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

Войти
Регистрация
Восстановить пароль
 
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
#1

Добавление строки в стек - C++

13.11.2012, 21:11. Просмотров 1102. Ответов 14
Метки нет (Все метки)

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

Уже раза 3-4 писал, так и никто не помог....
Программку чутку доделал, осталось только организовать добавление элементов структуры в стек.
Помогите пожалуйста.

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
#include <iostream>
#include <string>
 
using namespace std;
 
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
{
 string fio;
 string vid;
 string fak;
 string spc;
 int lvl;
};
 
void word(sport * obj, int n)
{
     for (int i=0; i < n; i++)
     {
        std::cout << std::endl;
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г”.Г€.ГЋ.: ";
        getline(std::cin, obj[i].fio);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ñïîðòå: ";
        getline(std::cin, obj[i].vid);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ГґГ*êóëüòåòå: ";
        getline(std::cin, obj[i].fak);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ñïåöèГ*ëüГ*îñòè: ";
        getline(std::cin, obj[i].spc);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® âîçðГ*Г±ГІГҐ: ";
        std::cin >> obj[i].lvl;
        std::cout << std::endl;
     } 
}
  
int main ()
{
    system("chcp 1251");
    setlocale(0, "rus");
    
    int n = 1;
    sport* mas_struct=new sport[n]; // ГЊГ*Г±Г±ГЁГў äëÿ õðГ*Г*ГҐГ*ГЁГї Г¤Г*Г*Г*ûõ
    word(mas_struct,n); // ÔóГ*êöèÿ ââîäГ* Г¤Г*Г*Г*ûõ Г® ñòóäåГ*ГІГ*Гµ
 
    
 
    system("pause");
    return 0;   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2012, 21:11     Добавление строки в стек
Посмотрите здесь:

Добавление элемента в стек - C++
Здравствуйте, после цикла for, в котором добавляю элементы в стек, голова стека begin остается = NULL, в чем проблема? #include...

Организовать заданную структуру данных: точка (x, y) плоскости, стек (добавление, удаление и чтение элемента) - C++
Организовать заданную структуру данных: точка (x, y) плоскости, стек. Определить структуру элемента и написать подпрограммы добавления,...

Строки и стек - C++
Задача такова: пользователь с клавиатуры вводит строку, после введения запускается обработчик, который удаляет из этой строки символ &quot;t&quot;....

Стек + Строки - C++
Всем доброго дня) Вопрос таков подскажите плиз как в стек засунуть слово? то есть массив char, задание состоит в том чтобы определить...

Реализовать класс стек, хранящий в себе строки - C++
Необходимо реализовать класс стек, хранящий в себе строки. Чужие реализации не интересуют. Шаблоны использовать нельзя. Вот, что написал....

Из строки извлечь символы операций в стек, а цифры - в другую строку - C++
Из исходной строки необходимо извлечь символы операций и поместить в стек а цифры в другую строку... но вот ошибка... Вот код:const int max...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
13.11.2012, 21:41     Добавление строки в стек #2
C++
1
T operator[](int);
Стек, он на то и стек, что к произвольному элементу в нём не обратишься. Эта перегрузка оператора здесь не нужна, скорее всего.
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
14.11.2012, 01:46  [ТС]     Добавление строки в стек #3
Ну допустим, и попрощаемся с шаблончиком:
C++
1
2
3
4
5
6
7
8
template<typename T>
T MyStack<T>::operator[](int pos)
{   
  if( pos <= size - 1 )                          
  return stack[pos]; 
  else 
  cout << "Vihod za granici steka/" << endl;                          
}
А как все таки со строками работать?
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
14.11.2012, 09:56     Добавление строки в стек #4
Цитата Сообщение от SuLLeN Посмотреть сообщение
А как все таки со строками работать?
Ну а что не получается-то? Пробовал написать такое?
C++
1
2
MyStack<string> stringStack;
stringStack.push("Push Me Baby");
Работает?
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
14.11.2012, 16:12  [ТС]     Добавление строки в стек #5
А если по элементно из структуры
C++
1
2
3
4
5
6
7
8
struct sport
{
 string fio;
 string vid;
 string fak;
 string spc;
 int lvl;
};
вбивать в стек, то как будет выглядеть это?

Добавлено через 11 минут
Сначала нужно записать элементы в массив, к примеру mas_struct, а потом этот массив в стек запилить...
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
14.11.2012, 16:18     Добавление строки в стек #6
Лично я нихрена не понял что надо в стек запихать, строку, элемент структуры, структуру или массив структур...
Видимо поэтому
Цитата Сообщение от SuLLeN Посмотреть сообщение
Уже раза 3-4 писал, так и никто не помог....
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
14.11.2012, 17:05  [ТС]     Добавление строки в стек #7
Создать стек записи Спортсмен на основе статического массива типа запись.
Реализовать методы : Добавить элемент, удалить элемент, вершина стека.

Может я объясняю не так.... в общем вот задание.

Добавлено через 2 минуты
В записи должны быть элементы: string fio (ФИО), string vid (Вид спорта), string fak (Факультет), string spc (Специальность), int lvl (Возраст).
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
14.11.2012, 17:19     Добавление строки в стек #8
А шаблон тебе зачем?
В общем класс стек должен работать со структурой (sport в твоем случае).
Я бы реализовал стек на основе указателей на структуру.
C++
1
2
3
4
5
6
sport *p_sport = new sport; // выделил
... // заполнил
my_stack.push( p_sport ); // затолкнул
...
my_stack.pop( &p_sport ); // вытолкнул
delete p_sport; // удалил
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
14.11.2012, 17:56  [ТС]     Добавление строки в стек #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main ()
{
    system("chcp 1251");
    setlocale(0, "rus");
    
    int i,n = 1;
    sport *p_sport = new sport[n];
    word(p_sport,n);
    
    MyStack.push(p_sport); // Тут ошибка
    
    MyStack.pop(&p_sport); // И тут
    
    delete p_sport;
 
    system("pause");
    return 0;   
}
C++
1
2
3
 C:\Users\SulleN\Desktop\stek.cpp In function `int main()': 
128 C:\Users\SulleN\Desktop\stek.cpp missing template arguments before '.' token 
130 C:\Users\SulleN\Desktop\stek.cpp missing template arguments before '.' token
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
14.11.2012, 18:11     Добавление строки в стек #10
А MyStack у тебя где определен?
Метод pop принимает аргументы?
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
14.11.2012, 18:15  [ТС]     Добавление строки в стек #11
Вот весь код

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
#include <iostream>
#include <string>
 
using namespace std;
 
template<typename T>
class MyStack
{
  public:
    MyStack();
    void push(T);
    void pop();
    T top();
    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>
int MyStack<T>::mySize() const
{
  return size;  
}
 
struct sport
{
 string fio;
 string vid;
 string fak;
 string spc;
 int lvl;
};
 
void word(sport * obj, int n)
{
     for (int i=0; i < n; i++)
     {
        std::cout << std::endl;
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г”.Г€.ГЋ.: ";
        getline(std::cin, obj[i].fio);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ñïîðòå: ";
        getline(std::cin, obj[i].vid);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ГґГ*êóëüòåòå: ";
        getline(std::cin, obj[i].fak);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ñïåöèГ*ëüГ*îñòè: ";
        getline(std::cin, obj[i].spc);
        std::cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® âîçðГ*Г±ГІГҐ: ";
        std::cin >> obj[i].lvl;
        std::cout << std::endl;
     } 
}
  
int main ()
{
    system("chcp 1251");
    setlocale(0, "rus");
    
    int i,n = 1;
    sport *p_sport = new sport[n];
    word(p_sport,n);
    
    MyStack.push(p_sport);
    
    MyStack.pop(&p_sport);
    
    delete p_sport;
 
    system("pause");
    return 0;   
}
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
14.11.2012, 18:24     Добавление строки в стек #12
Ну а дальше то что?
Класс стека не определен, метод pop параметров не принимает. Что будешь предпринимать?
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
14.11.2012, 18:28  [ТС]     Добавление строки в стек #13
Знал бы, не просил бы помощи... логично ведь?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
14.11.2012, 18:36     Добавление строки в стек #14
Нее дружок, с такими знаниями ты сам ничего не сделаешь, а думать за тебя я не хочу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 19:57     Добавление строки в стек
Еще ссылки по теме:

Добавление строки в массив - C++
Здравствуйте! есть массив char arr. как в него записать через цикл энное количество строк?

Добавление строки в массив - C++
Добрый день! Поставил себе задачу написать класс для работы со строками (куча разнообразных методов). В данный момент застрял над...

Добавление символа в конец строки - C++
char c,st=&quot;&quot;; Я хочу формировать строку st, добавляя в ее конец символы c один за другим. Как это сделать?

Добавление строки в двумерный массив - C++
Ребят, уже неделю мучаюсь, не могу добавить в двумерный динамический массив строку, без использования векторов и т.д. Чисто на циклах,...

Задача на добавление строки в массив - C++
Вставить новую строку после всех строк, в которых нет ни одного четного эле* мента. Добавлено через 36 секунд Помогите, кому...


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

Или воспользуйтесь поиском по форуму:
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
14.11.2012, 19:57  [ТС]     Добавление строки в стек #15
Может кто другой поможет тогда? В беде человека оставлять тоже не вариант...

Добавлено через 11 минут
Ну как обычно, пол пути прошел и встал на месте...

Добавлено через 40 минут
Люди, помогите кто нибудь, пожалуйста, неделю уже пишу!
Yandex
Объявления
14.11.2012, 19:57     Добавление строки в стек
Ответ Создать тему
Опции темы

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