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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
#1

Определить количество элементов в стеке - C++

01.09.2010, 21:42. Просмотров 2164. Ответов 39
Метки нет (Все метки)

Привет народ.
Подскажите пожалуйста как получить кол-во элементов в стеке?
Я пытаюсь написать функцию выдающую такое значение.
Спасибо.

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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
 
class MyClass
{
public:
    int Stack1[10];
    int Stack2[10];
     int Top;
 
public:
    MyClass() : Top(0)
    {}
public:
    void Push(int var ,int Stk[10]);
public:
    int Pop();
public:
    int GetNum();
};
 
int MyClass::GetNum()
{
return(Top);
}
 
int MyClass::Pop()
{
    int var = Stack1[Top];
    Top--;
    if(Top < 0)
        Top = 0;
    return(var);
}
 
void MyClass::Push(int var ,int Stk[10])
{
    Stk[Top] = var;
     Top++ ;
     if(Top == 10)
         Top = 9;
}
 
 
int main()
{
    setlocale(LC_CTYPE,"Russian");
    MyClass obj;
 
    cout << "Кол-во элементов в Stack1: " << obj.GetNum() << "\n";
    for(int i = 1;i <=10;i++)
    {
        obj.Push(i ,obj.Stack1);
    }
    cout << "Кол-во элементов в Stack1 после вызова функции Push(): " << obj.GetNum() << "\n";
    cout << "Элементы извлеченные из Stack1: " << "\n";
    for(int i = 0;i < 10;i++)
    {
        cout << obj.Pop() << "  ";
    }
    cout << "\n";
    cout << "Кол-во элементов в Stack1: " << obj.GetNum() << "\n";
    
    _getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2010, 21:42     Определить количество элементов в стеке
Посмотрите здесь:
В стеке определить количество элементов, имеющих значения меньше среднего и удалить эти элементы C++
C++ Посчитать в стеке количество элементов между минимальным и максимальным значениями
Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5 C++
C++ Определить количество нулевых элементов, количество элементов в интервале от 5 до 10
Определить количество отрицательных элементов, количество элементов в интервале от 1 до 5 C++
C++ В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов.
Определить количество положительных и количество отрицательных элементов заданного массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
01.09.2010, 22:10     Определить количество элементов в стеке #2
Переменная top должна указывать на вершину, это и будет количестом элементов в стеке.
bobromet
24 / 24 / 1
Регистрация: 06.03.2010
Сообщений: 59
01.09.2010, 22:13     Определить количество элементов в стеке #3
Ты тут Top обнуляешь а потом вызываешь чтоб показать количество, на выходе вполне ожидаемый ноль,
все правильно за исключением назв переменной

C++
1
2
3
4
5
6
7
8
int MyClass::Pop()
{
        int var = Stack1[Top];
        Top--;
        if(Top < 0)
                Top = 0;
        return(var);
}
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 22:16  [ТС]     Определить количество элементов в стеке #4
Переменная top должна указывать на вершину, это и будет количестом элементов в стеке.
Спасибо Дима... Только переменная Top одна, а стеков может быть несколько. Я хотел отталкиваться от
длины массива. Помню в C# есть что-то вроде Stack1.Length
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
01.09.2010, 22:17     Определить количество элементов в стеке #5
C++
1
void MyClass::Push(int var ,int Stk[10])
Что за? Вы подаете в функцию 1 10-ый элемент. Оно вам надо? оО
Хотя видимо надо) Ссори)

А что неверно-то?
Результат выполнения:
Кол-во элементов в Stack1: 0
Кол-во элементов в Stack1 после вызова функции Push(): 9
Элементы извлеченные из Stack1:
10 9 8 7 6 5 4 3 2 1
Кол-во элементов в Stack1: 0
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 22:25  [ТС]     Определить количество элементов в стеке #6
Код
Что за? Вы подаете в функцию 1 10-ый элемент. Оно вам надо? оО
Мы передаем в функцию массив из 10-ти элементов в качестве аргумента.
Примерно то же самое хотелось бы сделать с функцией Pop.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
01.09.2010, 22:29     Определить количество элементов в стеке #7
NikolaWhite, Туплю. День видать тяжелый был.
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 22:41  [ТС]     Определить количество элементов в стеке #8
Позвольте не согласиться.Функция Push() принимает в качестве аргумента вызывающий объект
(Stack1[10] или Stack2[10] )
ForEveR
01.09.2010, 22:42
  #9

Не по теме:

NikolaWhite, Да-да. Верно. Я ж написал выше.

Jupiter
01.09.2010, 22:51
  #10

Не по теме:

NikolaWhite, а смысл делать данные открытыми?

TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 22:52  [ТС]     Определить количество элементов в стеке #11
И все-таки.....как же получить это количество элементов в массиве/стеке?????
Кто-нибудь???
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.09.2010, 22:56     Определить количество элементов в стеке #12
C++
1
2
3
4
int MyClass::GetNum()
{
return(Top);
}
а это по вашему что? - верхушка добавляете 1 и получите к-во элементов
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 23:09  [ТС]     Определить количество элементов в стеке #13
У меня два стека(а может быть больше) ,а переменная Top одна. Кол-во элементов в разных стеках может
быть разное, а значение переменной Top одно.
Я просто хочу написать функцию(GetNum()), которая возвращает кол-во элементов в вызывающем объекте.
bobromet
24 / 24 / 1
Регистрация: 06.03.2010
Сообщений: 59
01.09.2010, 23:19     Определить количество элементов в стеке #14
Какой смысл делать класс с двумя одинаковыми стеками? Делаешь класс с одним стеком и с одним извиняюсь топом, потом делаешь сколько угодно объектов и в каждом будет свой стек с своим топом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2010, 23:36     Определить количество элементов в стеке
Еще ссылки по теме:
C++ Определить количество положительных и количество отрицательных элементов до первого нуля. Найти ошибку в коде
Определить количество положительных и количество отрицательных элементов массива C++
В массиве А(n) (n<=7) хотя бы один нуль. Определить количество положительных и количество отрицательных элементов к первому нулю. C++
C++ Инициализация, добавление и удаление элементов в СТЕКЕ
Определить количество четных элементов и сумму абсолютных величин элементов матрицы C++

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.09.2010, 23:36     Определить количество элементов в стеке #15
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
 
const int SIZE = 10;
 
class MyClass {
private:
    int Stack[SIZE];
    int Top;
public:
    MyClass() : Top(0) {}
    void Push(int var);
    int Pop();
    int GetNum();
};
 
int MyClass::GetNum()
{
     return(Top);
}
 
int MyClass::Pop()
{
    if(Top == 0) cout << "Стек пуст";
    return Stack[--Top];
}
 
void MyClass::Push(int var)
{
    if(Top == SIZE) cout << "Стек полон";
    Stack[Top++] = var;
}
 
int main()
{
        setlocale(LC_CTYPE,"Russian");
        MyClass obj; // создаем нужное количество стеков, таким образом для каждого стека будет своя перемення Тор
        cout << "Кол-во элементов в Stack1: " << obj.GetNum() << "\n";
        for(int i = 1; i < 11; i++) obj.Push(i);
        cout << "Кол-во элементов в Stack1 после вызова функции Push(): " << obj.GetNum() << endl;
        cout << "Элементы извлеченные из Stack1: " << "\n"; // "\n" -подобные последовательности лучше заключать в одинарные кавычки - '\n'
        for(int i = 1; i < 11; i++) cout << obj.Pop() << "  ";
        cout << endl;
        cout << "Кол-во элементов в Stack1: " << obj.GetNum() << "\n";
        getch();
}
Yandex
Объявления
01.09.2010, 23:36     Определить количество элементов в стеке
Ответ Создать тему
Опции темы

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