С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 39
1

Удаление из стека

17.07.2017, 13:36. Показов 3977. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго, я не понимаю, почему в методе Pop() происходит удаление значение из массива(стека) ведь return только возвращает данные, т.е только их отображает. Вот и вопрос, где я допустил ошибку?


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
class Stack
    {
        char[] chor;
        int tor;
 
        public Stack(int size)
        {
            chor = new char[size];
            tor = 0;
        }
 
        public void Pomesti(char s)
        {
            if (tor == chor.Length)
            {
                Console.WriteLine("Стек Полон");
                return;
            }
            chor[tor] = s;
            tor++;
        }
 
        public char Pop()
        {
            if (tor == 0)
            {
                Console.WriteLine("Стек пуст");
                return (char) 0;
            }
            tor--;
            return chor[tor];
        }
 
public class Program
    {
        public static void Main(string[] args)
        {
            int i;
            char ch;
            Stack bop = new Stack(10);
            for (i = 0; !bop.full(); i++)
            {
                bop.Pomesti((char)('A' + i));
 
            }
            if (bop.full()) Console.WriteLine("Стек полон");
 
            while (!bop.pusto())
            {
                ch = bop.Pop();
                Console.WriteLine(ch);
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2017, 13:36
Ответы с готовыми решениями:

Создание стека и удаление наименьшего элемента
Ввести символы, формируя из них стек. Или заполнить рандомно. Удалить минимальный элемент из стека....

Реализация стека целых чисел. Процедура добавления нового элемента, удаление, вывод стека
Попросили написать программку, но, паскаль очень давно не практикую, поэтому прошу тут: Надо...

Удаление элементов из стека
Задание: 10. В созданном списке определить количество элементов, имеющих значения, меньше среднего...

Удаление элементов из стека
Народ, помогите пожалуйста, срочно нужно. Требуется : Удалить элемент, который находится в...

13
Администратор
Эксперт .NET
17697 / 13824 / 5313
Регистрация: 17.03.2014
Сообщений: 28,340
Записей в блоге: 1
17.07.2017, 13:52 2
kalifornianDog, подумай что делает строка
C#
1
tor--;
и как значение этой переменной связано с содержимым стека.
1
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 39
17.07.2017, 14:26  [ТС] 3
переменная tor - индекс вершины стека,
C#
1
 return chor[tor];
Вот про эту строку вопрос? Она просто возвращает мне элемент, который находится последним
0
Администратор
Эксперт .NET
17697 / 13824 / 5313
Регистрация: 17.03.2014
Сообщений: 28,340
Записей в блоге: 1
17.07.2017, 14:27 4
kalifornianDog, вопрос про строку tor--;, а не про return. Продолжай думать.
1
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 39
17.07.2017, 14:50  [ТС] 5
Возможно, переменная
C#
1
tor
дает мне определенный доступ к стеку. Т.е только к последнему элементу стека. Но получается, что никак не удаляет содержимое стека. И получается, что сам стек не притерпел изменений?
0
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,223
18.07.2017, 12:26 6
kalifornianDog, зайдем с другой стороны: зачем в методе Pop вообще нужна строка tor--;?
0
1454 / 846 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
18.07.2017, 12:58 7
Цитата Сообщение от kalifornianDog Посмотреть сообщение
я не понимаю, почему в методе Pop() происходит удаление значение из массива(стека) ведь return только возвращает данные
По всей видимости ты этот код сам не писал.

Но почему ты ждёшь от этого метода именно такого поведения?
Он написан и работает как должен.

Вот описание методов любого стэка: https://msdn.microsoft.com/ru-... x#Anchor_4
0
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 169
18.07.2017, 14:08 8
не мучайте вы человека.
C#
1
2
tor--;
            return chor[tor];
заменить на

C#
1
            return chor[tor-1];
хотя про

C#
1
tor--;
надо бы почитать
0
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,223
18.07.2017, 15:36 9
Цитата Сообщение от MINO Посмотреть сообщение
не мучайте вы человека.
Дай человеку рыбу — и он будет сыт один день.
Научи человека рыбачить — и он будет сыт всю жизнь.

Цитата Сообщение от MINO Посмотреть сообщение
tor--; return chor[tor]; заменить на return chor[tor-1];
И стек перестанет работать.
0
Эксперт .NET
1972 / 1430 / 338
Регистрация: 15.06.2012
Сообщений: 5,366
Записей в блоге: 3
18.07.2017, 16:16 10
у тебя есть n-єлементов в стеке. Тьі вначале понижаешь счетчик до 9, а потом возращаешь девятьій. А нужно по идеи наоборот. Про инкримент реально нужно почитать, его нужно применить в ретерне, а не перед.

Цитата Сообщение от kolorotur Посмотреть сообщение
Дай человеку рыбу — и он будет сыт один день.
Научи человека рыбачить — и он будет сыт всю жизнь.
Признайся -- мы просто не любим выдавать готовое, а предпочитаем "помучить".
1
kolorotur
18.07.2017, 16:59
  #11

Не по теме:

Цитата Сообщение от Wolfdp Посмотреть сообщение
мы просто не любим выдавать готовое, а предпочитаем "помучить".
Ну зачем же?
Если у человека возникают сложности с такими простыми вещами, то будет намного лучше, если он додумается до ответа сам — крепче запомнится. А мы поможем натолкнуть на правильную мысль.
"Мучим" и глумимся мы над лентяями, которые тупо вываливают текст задания на форум :D

0
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 169
24.07.2017, 22:40 12
Цитата Сообщение от kolorotur Посмотреть сообщение
И стек перестанет работать.
Да ту и стеком то не пахнет, скорее наоборот.
0
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
25.07.2017, 02:44 13
Добавлено через 15 секунд
Ну здесь как бы не происходит никакого удаления элемента из стека, так-как это массив.
Ты просто по элементам массива пробегаешь с помощью переменной tor ,которая в роли индексов элементов от нуля до последнего и от последнего до нуля.
0
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,223
25.07.2017, 10:20 14
Цитата Сообщение от MINO Посмотреть сообщение
Да ту и стеком то не пахнет, скорее наоборот.
Почему? Вполне себе стек: последний пришел, первый вышел.
0
25.07.2017, 10:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2017, 10:20
Помогаю со студенческими работами здесь

Удаление элемента из стека
Помогите пожалуйста Нужно создать стек и удалить из него элемент (например B)

Удаление элементов из стека
Удалить из созданного списка(стек) отрицательные элементы.

Удаление элементов из стека
Создать стек содержащий целые числа. Из стека удалить элементы каратные 5. Вывести стек....

Удаление элементов из стека
Здравствуйте. Посмотрите, пожалуйста мой код. Это не совсем обычная реализация стэка. И может быть...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru