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

Создание стека структур - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
22.04.2013, 22:45     Создание стека структур #1
Как мне объявить стек структур с помощью <stack> ? Я создал структуру и хотел сделать стек таких структур, но почему-то у меня не получается =( Взгляните сами:
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
#include <iostream>
#include <stack>
 
using namespace std;
 
const int N=100;
 
struct Football
 {
     char fio[10];
     int vozrast;
     int kol_gollov=0;
     double vremya=0;
     char legioner[3];
     double plata=0;
 };
stack <Football> football;
 
int main()
{
    cout<<"Vvedite familiu imya otchestvo"<<endl;
    cin>>Football.fio;
    cout<<"Vozrast"<<endl;
    cin>>football.vozrast;
    cout<<"Kollichestvo golov"<<endl;
    cin>>football.kol_gollov;
    cout<<"Vremya"<<endl;
    cin>>football.vremya;
    cout<<"Yavlyaentsya legionerom? (yes/no)"<<endl;
    cin>>football.legioner;
    cout<<"Zar_plata"<<endl;
    cin>>football.plata;
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.04.2013, 19:08     Создание стека структур #21
ququ_smile, ну структуры вы знаете? можно переделать, оставить структуру и необходимые функции для работы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
23.04.2013, 22:04  [ТС]     Создание стека структур #22
Цитата Сообщение от yoghurt92 Посмотреть сообщение
ququ_smile, ну структуры вы знаете? можно переделать, оставить структуру и необходимые функции для работы.
Как я понял, всё что нужно - это создать массив заполнять с 1-го элемента, а считать с последнего? И в нулевой элемент ничего не записать, ибо голова при этом будет -1 ?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.04.2013, 22:06     Создание стека структур #23
ququ_smile, так у вас же стек а не массив, что именно вас не устраивает?
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
23.04.2013, 22:09  [ТС]     Создание стека структур #24
Цитата Сообщение от yoghurt92 Посмотреть сообщение
ququ_smile, так у вас же стек а не массив, что именно вас не устраивает?
Ну я же вроде писал(или не писал... влом смотреть) что не буду тут, использовать <stack>, а буду всё делать вручную. Но по сути стек - это тоже массив, но обращение к элементам которого мне как раз и не нравится
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.04.2013, 22:13     Создание стека структур #25
ququ_smile, ну если у вас написано надо использовать стек, не думаю что у вас примут работу с массивом, поэтому надо разбираться, давайте вы скажите что не понятно, я попытаюсь объяснить по-человечески)
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
23.04.2013, 22:15  [ТС]     Создание стека структур #26
Цитата Сообщение от yoghurt92 Посмотреть сообщение
ququ_smile, ну если у вас написано надо использовать стек, не думаю что у вас примут работу с массивом, поэтому надо разбираться, давайте вы скажите что не понятно, я попытаюсь объяснить по-человечески)
Просто у меня был код на 250+ строк, сделаный под динамический массив и я его пытался передалать под стек(что очень геморойно, с моими то знаниями), поэтому, если не возражаете, давайте отложим консультацию на завтра
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.04.2013, 22:38     Создание стека структур #27
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Обсуждение начиналось нормально, но потом ушло куда-то в дебри. Дайте чуваку чё он просит, пусть он сам потом разбирается, стек ему надо или очередь, оформлять заполнение элементов стека в виде функции или нет

Итак, следую своему правилу: минимум изменений, вот таким должен быть твой код:


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
#include <iostream>
#include <stack>
 
using namespace std;
 
const int N=100;
 
struct Football
 {
     char fio[10];
     int vozrast;
     int kol_gollov;
     double vremya;
     char legioner[3];
     double plata;
 
     //Во-первых запомни, поля структур инициализируются в конструкторе
     //НО если эти значения непременно водятся с консоли, то, возможно, оно и лишнее
     Football () {kol_gollov= 0; vremya= 0; plata= 0;}
 
 
 };
stack <Football> football;
 
int main()
{
    
    //Тут всё просто:
    
    //Объявляешь переменную типа Football
    Football Football_;
    
    //И заполняешь её
    cout<<"Vvedite familiu imya otchestvo"<<endl;
    cin>>Football_.fio;
    cout<<"Vozrast"<<endl;
    cin>>Football_.vozrast;
    cout<<"Kollichestvo golov"<<endl;
    cin>>Football_.kol_gollov;
    cout<<"Vremya"<<endl;
    cin>>Football_.vremya;
    cout<<"Yavlyaentsya legionerom? (yes/no)"<<endl;
    cin>>Football_.legioner;
    cout<<"Zar_plata"<<endl;
    cin>>Football_.plata;
 
      
    //Ну и кладём всё это дело в стек  
    football.push (Football_);  
 
    return 0;
}

Вопрос решён. Всё остальное это ДРУГИЕ вопросы. В сети есть охренительная книга по stl
Л.Аммерааль - STL для программистов на C++.djvu

Если надо я скину
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.04.2013, 22:43     Создание стека структур #28
kravam, за книгу спасибо, да все понятно, но у меня вопрос, как вы собираетесь вывести содержимое стека, например, я хочу вывести все записи на экран?)
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.04.2013, 22:56     Создание стека структур #29
Я ничё не собираюсь выводить. Но если бы приспичило, то так:
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
#include <iostream>
#include <stack>
#include <stdio.h>
 
using namespace std;
 
const int N=3;
 
struct Football
 {
     char fio[10];
     int vozrast;
     int kol_gollov;
     double vremya;
     char legioner[3];
     double plata;
 
     //Во-первых запомни, поля структур инициализируются в конструкторе
     //НО если эти значения непременно водятся с консоли, то, возможно, оно и лишнее
     Football () {kol_gollov= 0; vremya= 0; plata= 0;}
 
 
 };
stack <Football> football;
 
int main()
{
    
    //Тут всё просто:
    
    //Объявляешь переменную типа Football
    Football Football_;
    
    for (int i= 0; i< N; i++) {
        //И заполняешь её
        cout<<"Vvedite familiu imya otchestvo"<<endl;
        cin>>Football_.fio;
        cout<<"Vozrast"<<endl;
        cin>>Football_.vozrast;
        cout<<"Kollichestvo golov"<<endl;
        cin>>Football_.kol_gollov;
        cout<<"Vremya"<<endl;
        cin>>Football_.vremya;
        cout<<"Yavlyaentsya legionerom? (yes/no)"<<endl;
        cin>>Football_.legioner;
        cout<<"Zar_plata"<<endl;
        cin>>Football_.plata;
     
          
        //Ну и кладём всё это дело в стек  
        football.push (Football_);  
    } 
     
    
    //ВЫвод:
    while (!football.empty())  {
     cout <<  football.top().fio<< endl;
     cout <<  football.top().vozrast<< endl;
     cout <<  football.top().kol_gollov<< endl;
     cout <<  football.top().vremya<< endl;
     cout <<  football.top().legioner<< endl;
     cout <<  football.top().plata<< endl;
     football.pop();
    }
    
    
    
    return 0;
}
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.04.2013, 22:58     Создание стека структур #30
kravam, поправьте если ошибаюсь, но после вашего вывода стек будет пуст?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.04.2013, 22:59     Создание стека структур #31
Естессно
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.04.2013, 23:04     Создание стека структур #32
kravam, ну вот мы вернулись к тому же самому а если содержимое опять понадобиться? поэтому я предлагал написать вручную и описать функцию вывода без удаления
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.04.2013, 23:07     Создание стека структур #33
Вот когда понадобится тогда и будет разговор.
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
24.04.2013, 02:32  [ТС]     Создание стека структур #34
Цитата Сообщение от kravam Посмотреть сообщение
Я ничё не собираюсь выводить. Но если бы приспичило, то так:
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
#include <iostream>
#include <stack>
#include <stdio.h>
 
using namespace std;
 
const int N=3;
 
struct Football
 {
     char fio[10];
     int vozrast;
     int kol_gollov;
     double vremya;
     char legioner[3];
     double plata;
 
     //Во-первых запомни, поля структур инициализируются в конструкторе
     //НО если эти значения непременно водятся с консоли, то, возможно, оно и лишнее
     Football () {kol_gollov= 0; vremya= 0; plata= 0;}
 
 
 };
stack <Football> football;
 
int main()
{
    
    //Тут всё просто:
    
    //Объявляешь переменную типа Football
    Football Football_;
    
    for (int i= 0; i< N; i++) {
        //И заполняешь её
        cout<<"Vvedite familiu imya otchestvo"<<endl;
        cin>>Football_.fio;
        cout<<"Vozrast"<<endl;
        cin>>Football_.vozrast;
        cout<<"Kollichestvo golov"<<endl;
        cin>>Football_.kol_gollov;
        cout<<"Vremya"<<endl;
        cin>>Football_.vremya;
        cout<<"Yavlyaentsya legionerom? (yes/no)"<<endl;
        cin>>Football_.legioner;
        cout<<"Zar_plata"<<endl;
        cin>>Football_.plata;
     
          
        //Ну и кладём всё это дело в стек  
        football.push (Football_);  
    } 
     
    
    //ВЫвод:
    while (!football.empty())  {
     cout <<  football.top().fio<< endl;
     cout <<  football.top().vozrast<< endl;
     cout <<  football.top().kol_gollov<< endl;
     cout <<  football.top().vremya<< endl;
     cout <<  football.top().legioner<< endl;
     cout <<  football.top().plata<< endl;
     football.pop();
    }
    
    
    
    return 0;
}
for (int i= 0; i< N; i++) этот цикл нужен для того, чтобы в стек засунуть нужное нам кол-во переменных Football_ ?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
24.04.2013, 08:47     Создание стека структур #35
Естессно
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
24.04.2013, 10:13     Создание стека структур #36
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Уговорили.
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
#include <iostream>
#include <set>
#include <vector>
#include <limits>
#include <queue>
#include <stdio.h>
#include <string>
 
using namespace std;
 
struct Football{
    char fio[10];
    int vozrast;
    int kol_gollov;
    double vremya;
    char legioner[3];
    double plata;
    Football () {
        kol_gollov = 0;
        vremya = 0;
        plata = 0;
    }
    void in(){
        cout<<"Vvedite familiu imya otchestvo"<<endl;
        cin>>fio;
        cout<<"Vozrast"<<endl;
        cin>>vozrast;
        cout<<"Kollichestvo golov"<<endl;
        cin>>kol_gollov;
        cout<<"Vremya"<<endl;
        cin>>vremya;
        cout<<"Yavlyaentsya legionerom? (yes/no)"<<endl;
        cin>>legioner;
        cout<<"Zar_plata"<<endl;
        cin>>plata;
    }
    void out(){
        cout <<  this->fio << " ";
        cout <<  this->vozrast << " ";
        cout <<  this->kol_gollov << " ";
        cout <<  this->vremya << " ";
        cout <<  this->legioner << " ";
        cout <<  this->plata << endl;
    }            
};
 
class Tstack{
public:
    struct stack{
        Football inf;
        stack *next;
    };
    stack *head;
    Tstack(){
        head =  NULL;
    }
    void push(Football x){
        stack *st = new stack;
        st->inf = x;
        st->next = head;
        head = st;
    }
    bool empty(){
        return !head;
    }
    Football pop(){
        stack *nhead = head;
        Football c = head->inf;
        head = nhead->next;
        delete nhead;
        return c;
    }
    void show(){
        stack *st = head;
        while (st) {
            st -> inf.out();
            st = st->next;
        } 
    }
}; 
 
 
 
 
int main(){            
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    Tstack nazvaniesteka;
    for (int i= 0; i < 3; i++) {
        Football temp;
        temp.in();
        //Ну и кладём всё это дело в стек  
        nazvaniesteka.push(temp);  
    } 
    nazvaniesteka.show();
    return 0;
}
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
24.04.2013, 10:27     Создание стека структур #37
yoghurt92, а вы и так в очереди поудаляли. Кстати, вы не правы, если идти по итераторам можно без удаления вывести в 1 проход.
Какие же итераторы у стека и очереди?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 10:39     Создание стека структур
Еще ссылки по теме:

C++ Создание стека и проверка на палиндром
создание стека и действия с ним C++
Создание стека с односвязным LinkedList C++

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

Или воспользуйтесь поиском по форуму:
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
24.04.2013, 10:39     Создание стека структур #38
Герц, я уже написал
бегунок по ->next
В STL нет стандартной реализации итераторов в stack, либо я о ней не знаю, зато я привёл структуру стека в которой можно спокойно итерировать по указателям

Добавлено через 1 минуту
Герц,
C++
1
2
3
4
5
6
7
void show(){
        stack *st = head;
        while (st) {
            st -> inf.out();
            st = st->next;
        } 
    }
итерируем по всему стеку и не удаляем элементы
Yandex
Объявления
24.04.2013, 10:39     Создание стека структур
Ответ Создать тему
Опции темы

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