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

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

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

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

01.09.2010, 21:42. Просмотров 2230. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2010, 21:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить количество элементов в стеке (C++):

В стеке определить количество элементов, имеющих значения меньше среднего и удалить эти элементы - C++
Здравствуйте. Помогите пожалуйста исправить код. Создать стек из случайных чисел и определить, сколько элементов стека имеют значения...

Посчитать в стеке количество элементов между минимальным и максимальным значениями - C++
Доброго времени суток, господа) Возникла проблема с реализацией. Суть кода: посчитать в стеке количество элементов между минимальным и...

Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5 - C++
Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5 с++

количество четных элементов одномерного массива до числа равному а, Определить количество нечетных элементов двумерного массива - C++
1.Найти количество четных элементов одномерного массива до первого встреченного числа равного наперед заданному числу а. 2.Дан двумерный...

Определить количество нулевых элементов, количество элементов в интервале от 5 до 10 - C++
задание : Общее задание - Даны вещественные массивы c, d. В программе предусмотреть функции: - ввода массивов с клавиатуры; ...

Определить количество отрицательных элементов, количество элементов в интервале от 1 до 5 - C++
Доброго времени суток. Помогите пожалуйста с задачей.Буду очень благодарна. Даны вещественные массивы c, d.Определить количество...

39
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
01.09.2010, 22:10 #2
Переменная top должна указывать на вершину, это и будет количестом элементов в стеке.
0
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);
}
0
TheMachinist
243 / 175 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 22:16  [ТС] #4
Переменная top должна указывать на вершину, это и будет количестом элементов в стеке.
Спасибо Дима... Только переменная Top одна, а стеков может быть несколько. Я хотел отталкиваться от
длины массива. Помню в C# есть что-то вроде Stack1.Length
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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
0
TheMachinist
243 / 175 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 22:25  [ТС] #6
Код
Что за? Вы подаете в функцию 1 10-ый элемент. Оно вам надо? оО
Мы передаем в функцию массив из 10-ти элементов в качестве аргумента.
Примерно то же самое хотелось бы сделать с функцией Pop.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
01.09.2010, 22:29 #7
NikolaWhite, Туплю. День видать тяжелый был.
0
TheMachinist
243 / 175 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.09.2010, 22:41  [ТС] #8
Позвольте не согласиться.Функция Push() принимает в качестве аргумента вызывающий объект
(Stack1[10] или Stack2[10] )
0
ForEveR
01.09.2010, 22:42
  #9

Не по теме:

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

0
Jupiter
01.09.2010, 22:51
  #10

Не по теме:

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

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

Определить сумму указанных элементов, количество нечетных элементов и среднее арифметическое четных элементов массива - C++
Дан двумерный массив целых чисел. Определить: 1. Сумму элементов массива, больших 30 2. Количество нечетных элементов массива 3....

В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов. - C++
1. В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов. Число N и...

Определить количество положительных и количество отрицательных элементов заданного массива - C++
Определить количество положительных и количество отрицательных чисел массива

Определить количество положительных и количество отрицательных элементов до первого нуля. Найти ошибку в коде - C++
В маcсиве A(n) (n&lt;=7) хотя бы один элемент ноль. Определить количество положительных и количество отрицательных элементов до первого нуля! ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
01.09.2010, 23:36
Ответ Создать тему
Опции темы

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