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

Ошибка в получение значения (LIFO) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает std::cout || std::cin http://www.cyberforum.ru/cpp-beginners/thread928772.html
#include "Account.h" #include <string> #include <iostream> using std::cout; Account :: Account(int startBalance) { setBalance(startBalance); }
C++ Вычислить значение выражения жестокая задачка http://www.cyberforum.ru/cpp-beginners/thread928751.html
Указатель, выделение памяти под него C++
подскажите: int *var; *var = 1; и int *var = new int(1); эти 2 разные записи делают одно и тоже? т.е. первая запись тоже выделяет память под указатель? Просто на сколько я вычитал объявляя указатель, я должен обязательно под него выделить память используя оператор new, но в 1-м примере нет оператора new.
Подскажите как написать такое дерево (или БД) C++
Задача состоит в том, чтобы построить структуру данных по заданному рекурсивному расписанию каталогов. Причем:Все узлы отсортированны по порядковому номеру, в каждом узле должно быть имя, индекс родителя, сортированный вектор из индексов детей. Вот пример: . ./download_client.sh ./random1000_queries_sport.txt ./times.txt ./site ./site/site_kz_domains_random1000_2011-07-26.txt...
C++ Не видит конструктор http://www.cyberforum.ru/cpp-beginners/thread928740.html
Приветсвую всех! В общем у меня небольшая проблемка, с которой собственными силами разобраться не смог... Только начиню создавать класс , там определены конструктор и деструктор. Но появляется проблема с созданием экземпляра. Компилятор ругается на неразрешенный символ при вызове конструктора. Во вложениях видно что из экземпляра класса конструктор не доступен (1 картинка), а в самом классе...
C++ C++ файлы ifstream/ofstream запись класса Доброе время суток дамы и господа :) необходимо помочь ибо что-то голова не варит )) класс #pragma once #include <iostream> using namespace std; class date { int day; int mounth; int year; подробнее

Показать сообщение отдельно
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 00:33     Ошибка в получение значения (LIFO)
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
bool CStack::GetVal( int &val)
{
    if(pFirst == NULL)
        return 0;
    else
    {
        Elem *pCur = pFirst;
        if (pCur ->pNext == NULL) // если элемент один 
        {
             val = pCur ->val;
             delete pCur;
             pFirst = NULL;
             return 1;
        }
        while(pCur ->pNext ->pNext != NULL)
            pCur = pCur->pNext;
        Elen *pLast = pCur; // запомнили адрес предпоследнего (будет последним после удаления)
        pCur = pCur->pNext; // последний
        val = pCur ->val;
        delete pCur; // удалили последний
        pLast ->pNext = NULL; // предпоследний стал последним
        return 1;
    }
}
Но, вообще-то, стек у вас неправильно организован. Должен быть указатель на вершину стека (последний добавленный элемент) и через него делать все операции. У вас всё наоборот.

Добавлено через 2 часа 45 минут
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
#include <iostream>
using namespace std; 
 
class CStack
{
    int size;
    struct Elem
    {
        Elem *pNext;
        int val;
    };
    Elem *pFirst;
  
  public:
    CStack():size(0), pFirst(NULL) 
    {}
    ~CStack();
    void SetVal(int val);
    void GetVal(int &val);
    void ShowStack();
};
 
void CStack::SetVal(int val)
{
    Elem *pNew = new Elem;
    
    pNew ->val = val;
    pNew ->pNext = pFirst;
    pFirst = pNew;
    
    size++;
}
 
void CStack::ShowStack()
{
    if(pFirst == NULL)
    {
         cout <<  "\nThe stack is empty!\n";
         return;
    }
    
    Elem *pCur = pFirst;
    cout << endl;
    while(pCur != NULL)
    {
        cout << pCur ->val << endl;
        pCur = pCur ->pNext;
    }
    cout << endl;
}
 
void CStack::GetVal(int &val)
{
    if(pFirst == NULL)
    {
         cout <<  "\nThe stack is empty!\n";
         return;
    }
        
    val = pFirst ->val;
    Elem *pCur = pFirst;
    pFirst = pFirst ->pNext;
    delete pCur;
    --size;
}
 
CStack::~CStack()
{
    if(pFirst != NULL)
    {
        Elem *pCur;
        while(pFirst != NULL)
        {
            pCur = pFirst;
            pFirst = pFirst ->pNext;
            delete pCur;
            --size;
        }
    }
}
 
int main()
{
    CStack s;
    
    int v;
    while(1)
    {
        cout <<"Vvedite znachenie: "<<endl;
        cin >> v;
        s.SetVal(v);
        cout << "Prodolgit?" << endl;
        cin >> v;
        if(v != 1) break;
    }
    
    s.ShowStack();
    s.GetVal(v);
    cout << "Poslednij element: " << v << endl;
    s.ShowStack();
    
    system("pause");
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru