Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
1

Структура в стеке

28.04.2013, 08:31. Просмотров 1851. Ответов 4
Метки нет (Все метки)

Я наверное уже всех задолбал со своим стеком, но всё же мне еще нужна помощь))
Код, который ниже должен запрашивать у пользователя ввод структуры, которая после помещается в стеке. Так же программа может этот стек выводить и для сохранения информации я сохраняю этот стек в другом стеке . Но при компиляции выдает ошибку в выводе: 'class std::stack<Football>' has no member named 'fio'| и так для каждого поля.Не могу что не так =( Вот код:
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
#include <iostream>
#include <string.h>
#include <fstream>
#include <stack>
using namespace std;
 
void Add();
void ShowAll();
void menu(char);
 
struct Football{
    string fio,legioner;
    int age,golls;
    double time,plata;
};
Football op;
stack<Football> Stek,Temp;
 
int main()
{
string num;
 
     while(num[0]!='0') // Бесконечный цикл
  {         /* вывод меню */
    cout<<"1 - Read from file"<<endl;
    cout<<"2 - Add element"<<endl;
    cout<<"3 - Delete element"<<endl;
    cout<<"4 - Show 1 element"<<endl;
    cout<<"5 - Show all elements"<<endl;
    cout<<"6 - Sorting"<<endl;
    cout<<"7 - Individual task"<<endl;
    cout<<"8 - Write to file"<<endl;
    cout<<"0 - Exit"<<endl;
    cout<<"Input number of menu>"<<endl;// Вывод приглашения на выбор элемента меню};
    getline(cin,num); // Ввод строки
    if(num.size()>1) cout<<"Comand not found, retype!"<<endl;// Проверка размера строки
    else menu(num[0]);// Функция выполнения поля меню
  }
  return 0;
}
 
void menu(char a)
{
    switch(a)
    {
     case '0': cout<<"Exit"<<endl;
        break;
  //   case '1': Read();
        break;
     case '2': Add();
        break;
 //    case '3': Del();
        break;
  //   case '4': ShowOne();
        break;
     case '5': ShowAll();
        break;
 //    case '6': Sorting();
        break;
 //    case '7': IndTask();
        break;
  //   case '8': Write();
        break;
      default:
        cout<<"Comand not found, retype!"<<endl;
        break;
    }
}
//--------------------------------------Функция добавления элемента в стек-------------------------------------------
void Add()
{               //вводим данные
        cout << "Vvedite familiu imya otchestvo: ";
        cin.ignore();
        getline(cin,op.fio);
        cout << "Vozrast: ";
        cin >> op.age;
        cout << "Kollichestvo golov: ";
        cin >> op.golls;
        cout << "Vremya: ";
        cin >> op.time;
        cout << "Yavlyaentsya legionerom? (yes/no): ";
        cin.ignore();
        getline(cin,op.legioner);
        cout << "Zar_plata: ";
        cin >> op.plata;
        cout << endl;
        Stek.push(op);            //добавление элемента в стек
}
//------------------------------------Вывод стека на экран и сохранение таблицы во временном стеке---------------------------------
void ShowAll()
{
        Temp=Stek; //Сохраняем таблицу во временном стеке
        Stek.top();//выводим верхний
        cout << "\nVvedite familiu imya otchestvo" << Stek.fio;
        cout << "\nVozrast" << Stek.age;
        cout << "\nKollichestvo golov" << Stek.golls;
        cout << "\nVremya" << Stek.time;
        cout << "\nYavlyaentsya legionerom? (yes/no)" << Stek.legioner;
        cout << "\nZar_plata" << Stek.plata << '\n';
        Stek.pop(); //удаляем верхний
    }
З.Ы. Вопросик не по теме, но может кто-то наглядно объяснить как динамически выделять память под объекты структуры?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 08:31
Ответы с готовыми решениями:

Структура в стеке. Не работает ф-ия renumber
Моя задача Создать стек для сохранения строк файла. ** С помощью стандартного ввода / вывода...

Если создать указатель на переменную, созданную в стеке, переменная перемещается в кучу? Или остается в стеке?
Подскажите, если не трудно, я создаю переменную любого стандартного типа и она хранится в стеке, а...

Структура современной связи как структура системы власти - как структура государственного управления
Структура современной связи всё больше становится структурой государственного управления, в...

Структура таблицы для ввода номенклатуры в БД Аксесс 2003+ структура изделия
Доброго времени суток форумчане! Продолжаю писать свою самоделку, возник вопрос: Номенклатуру в...

4
быдлокодер
1718 / 905 / 106
Регистрация: 04.06.2008
Сообщений: 5,612
28.04.2013, 09:34 2
Я могу, конечно, сделать, чтобы твоя программа скомпилилась, но надо сперва понять чего ты хочешь. А это трудно.

Тебе компилятор чётко говорит: класс Football не имеет имеет поля fio, чё непонятного?

Вот у тебя стек:
C++
1
stack<Football> Stek
Вот ты в него запихал элементы типа Football, сейчас он просто сумма таких элементов:
Stek= Football_0+ Football_1+ Football_2 +Football_3

Какого рожна ты пишешь:
C++
1
Stek.fio
?

Stek имеет отношение к fio как свинья к апельсинам. Ты просто отсебятину лепишь. Кто тебя так учил писать? В каком учебнике? Я тебе сказал, какую книгу скачать для изучения STL, ты её скачал? Нет. А она простая!

А главное править-то что? Непонятно что ты хочешь этим сказать, а догадываться неохота.
1
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
28.04.2013, 10:46  [ТС] 3
Эм... видимо кодить ночью не очень) я понял свою ущербность, но тогда у меня вопрос.Вот с с помощью stek.top() получил вернхий элемент стека, которым является структура, в которой есть поля.Как мне правильно обратиться к полям этой стркутуры? Вот моя функция вывода, которая в моем понимании должна выводить на экран стек:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void ShowAll()
{
        Temp=Stek; //Сохраняем таблицу во временном стеке
    while(!Stek.empty())
        {
        Stek.top();//выводим верхний
        cout << "\nVvedite familiu imya otchestvo " << op.fio;
        cout << "\nVozrast " << op.age;
        cout << "\nKollichestvo golov " << op.golls;
        cout << "\nVremya " << op.time;
        cout << "\nYavlyaentsya legionerom? (yes/no)" << op.legioner;
        cout << "\nZar_plata " << op.plata << '\n';
        Stek.pop();} //удаляем верхний
    Stek=Temp;
    }
Но если, к примеру, ввести структуру 2 раза, то при выводе 2 раза выдает верхний элемент(т.е. тот, который был записан последним). Почему так, я же pop() написал?

З.Ы. Вот функция ввода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cout << "Vvedite familiu imya otchestvo: ";
        cin.ignore();
        getline(cin,op.fio);
        cout << "Vozrast: ";
        cin >> op.age;
        cout << "Kollichestvo golov: ";
        cin >> op.golls;
        cout << "Vremya: ";
        cin >> op.time;
        cout << "Yavlyaentsya legionerom? (yes/no): ";
        cin.ignore();
        getline(cin,op.legioner);
        cout << "Zar_plata: ";
        cin >> op.plata;
        cout << endl;
        Stek.push(op);
0
быдлокодер
1718 / 905 / 106
Регистрация: 04.06.2008
Сообщений: 5,612
28.04.2013, 15:14 4
А ты можешь ShowAll() и вывод запихать в одну программу и дать сюда? Просто ввод и вывод, ничего лишнего. И если будет неправильно вводить-выводить, дать сюда (ставлю 99 к одному, что ты с этой задачей не справишься).

Ну и так между прочим, три вопроса:
Stek.top();- это с какой целью здесь?

op- это что такое?

С этим ознакамливался?
Создание стека структур
1
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
29.04.2013, 00:21  [ТС] 5
Спасибо, я вроде разобрался. Stek.top() в коде уже уничтожено, а op - это объект структуры, который пихается в стек.В любом случае большое спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2013, 00:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость.
Ребят, помогите пожалуйста, 29 июня экзамен по &quot;Основы программирования&quot;,кто сколько сможет сделать...

Структура проектов, структура выходного каталога и пользовательские расширения сборок
В общем есть решение из нескольких проектов. Есть зависимости от сторонних библиотек. Требуется...

Структура «База», сущности «Универсам» и «Продукты», структура «Товар»
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности «Универсам» и...

структура array предназначена для хранения строки типа char. Структура имеет функцию, которая позволяет изменить символ
структура array предназначена для хранения строки типа char. Структура имеет функцию, которая...


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

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

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