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

Описать класс, реализующий стек. Написать программу, использующую этот класс для отыскания прохода по лабиринту

01.12.2020, 19:15. Показов 2801. Ответов 8

Author24 — интернет-сервис помощи студентам
Вот такое задание . Не понимаю принцип стека и как его реализовать. Хотелось бы увидеть код попроще
Описать класс, реализующий стек. Написать программу, использующую этот класс для
отыскания прохода по лабиринту.
Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат
либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в
него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в
матрице. После отыскания прохода программа печатает найденный путь в виде координат
квадратов.
Матрица вот такого типа
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 0, 1, 1, 1, 0, 1 },
{ 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } где нули - это проход, а единицы границы или стенки
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2020, 19:15
Ответы с готовыми решениями:

Описать класс,реализующий бинарное дерево,Написать прогу, использующую этот класс
Помогите с задачкой пожалуйста! Описать класс, реализующий бинарное дерево, обладающее...

Описать класс, реализующий стек. Использовать его для отыскания пути в лабиринте
Описать класс, реализующий стек. Написать программу, использующую этот класс для отыскания прохода...

Написать программу для отыскания прохода по лабиринту
Есть такая задача. Написать программу для отыскания прохода по лабиринту (структура данных –...

Написать программу, использующую этот класс для представления англо-русского словаря
Имеется код на задание: описание класса, реализующий бинарное дерево обладающее возможностью...

8
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
01.12.2020, 19:30 2
Цитата Сообщение от PLOHOYPAREN_ Посмотреть сообщение
Не понимаю принцип стека
Первый вошел, последним вышел. Классический пример: мытье стопки посуды.

Цитата Сообщение от PLOHOYPAREN_ Посмотреть сообщение
как его реализовать
Надо создать два класса: сам стек и элемент стека.
Элемент стека имеет два свойства: значение элемента, ссылка на следующий элемент.
При добавлении элемента в стек: создаем новый элемент стека, который ссылается на существующий. Существующий заменяется новым.
При удалении элемента из стека: существующий элемент стека заменяется на следующий элемент.

Цитата Сообщение от PLOHOYPAREN_ Посмотреть сообщение
отыскания прохода
Обычно, используется какой-нибудь A*. Но так как там у кое-кого беды с головой, то подразумевается алгоритм обхода графа в ширину или в глубину. Без разницы.
1
0 / 0 / 0
Регистрация: 24.11.2020
Сообщений: 14
01.12.2020, 19:34  [ТС] 3
I2um1, увидеть бы всё то, что ты написал. Принцип понял, а как это на практике реализовать , вопрос интересный. Если есть возможность помочь с этим вопросом, то был бы благодарен )
0
1842 / 1184 / 501
Регистрация: 14.10.2018
Сообщений: 3,180
01.12.2020, 19:57 4
PLOHOYPAREN_, Стек плохо подходит под эту задачу. Можно, но надо реверс делать Создать программу, отыскивающую проход по лабиринту.
1
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
01.12.2020, 20:00 5
Лучший ответ Сообщение было отмечено PLOHOYPAREN_ как решение

Решение

PLOHOYPAREN_, стек так:
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
using System;
 
var stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
int? value;
while ((value = stack.Pop()) != null)
{
    Console.WriteLine(value);
}
 
sealed class Stack<T>
    where T : struct
{
    private Node<T> current;
 
    public void Push(T value)
    {
        current = new Node<T>
        {
            Value = value,
            Next = current
        };
    }
 
    public T? Pop()
    {
        if (current is null)
        {
            return null;
        }
 
        T value = current.Value;
        current = current.Next;
 
        return value;
    }
}
 
sealed class Node<T>
{
    public T Value { get; set; }
 
    public Node<T> Next { get; set; }
}
1
0 / 0 / 0
Регистрация: 24.11.2020
Сообщений: 14
01.12.2020, 20:02  [ТС] 6
Enifan, просто мне в задании сказано делать через стек
0
1842 / 1184 / 501
Регистрация: 14.10.2018
Сообщений: 3,180
01.12.2020, 20:03 7
Цитата Сообщение от PLOHOYPAREN_ Посмотреть сообщение
просто мне в задании сказано делать через стек
вы хоть код видели ? там как раз стек
0
0 / 0 / 0
Регистрация: 24.11.2020
Сообщений: 14
01.12.2020, 20:09  [ТС] 8
Enifan, да, я понял, что там через стек .Вы просто писали, что стек плохо подходит под эту задачу. А в задании суть в том, чтобы как раз через стек сделать . вот)
0
1842 / 1184 / 501
Регистрация: 14.10.2018
Сообщений: 3,180
01.12.2020, 20:15 9
Цитата Сообщение от PLOHOYPAREN_ Посмотреть сообщение
Вы просто писали, что стек плохо подходит под эту задачу
Ну задание - есть задание, не мы его выбираем. Просто говорю, когда вы нашли "путь" , и начинаете выводить элементы из стека, у вас получается путь от выхода ко входу будет. Просто нужно делать дополнительный "переворот" элементов, а это затраты по памяти. В остальном случаи стек от очереди ничем не отличаются.
1
01.12.2020, 20:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2020, 20:15
Помогаю со студенческими работами здесь

Отыскания прохода по лабиринту
Рабочая программа, но криво в моем Vstudio выводит. Поправьте пожайлуйста. Задание: Описать...

Описать класс LIFO, реализующий стек произвольного размера для хранения целых чисел
Уважаемые программисты помогите пожалуйста с задачей в которой я не знаю как чего делать!!!!! ...

Описать класс, реализующий стек
Очень нужна хоть какая-нибудь помощь! У меня никак не получается написать программу а заказывать...

Описать класс, реализующий стек
Описать класс, реализующий стек. Написать программу, использующую этот класс для моделирования...

Описать класс, реализующий стек
Описать класс, реализующий стек. Написать программу, использующую этот класс для моделирования...

Описать класс, реализующий стек
Есть задание: Описать класс, реализующий стек и работу с ним. 1.) Класс должен содержать следующие...


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

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