Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2011, 12:52   #21
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от Protected_fat Посмотреть сообщение
[2,2] -> [2,3] -> [3,3] -> [3,4] -> [3,5] -> [2,5] -> [2,6] -> [2,7] -> [3,7] ->
[4,7] -> [4,6] -> [4,5] -> [5,5] -> [5,4] -> [5,3] -> [5,2] -> [5,1] ->

[2,2] -> [2,3] -> [3,3] -> [3,4] -> [3,5] -> [4,5] -> [5,5] -> [5,4] -> [5,3] ->
[5,2] -> [5,1] ->

вот, что мне выдает после запуска...
он и по 1, и по 0 ходит
Это и есть пути прохода в 2-х вариантах. Координаты массива начинаются с нуля, поэтому координата [2, 2] соответствует 3 строке и 3 столбцу
eoln вне форума Ответить с цитированием
Старый 07.07.2011, 22:26   #22
Protected_fat
Пользователь
 
Регистрация: 04.07.2011
Сообщений: 21
По умолчанию

блин точно спасибо
Protected_fat вне форума Ответить с цитированием
Старый 07.07.2011, 22:28   #23
Protected_fat
Пользователь
 
Регистрация: 04.07.2011
Сообщений: 21
По умолчанию

но сделать с помошью стека я так и не могу
я не понимаю этот стек!
столько уже учебников прочитала...бесполезно...
Protected_fat вне форума Ответить с цитированием
Старый 07.07.2011, 23:06   #24
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

На скорую руку решение на основе двусвязного списка (усовершенствованный стек), если просто стек нужен, достаточно избавиться от next'a и чуть поправить код. Закоментированные строки показывают операции со списком (стеком)
Код:
int mas[10][10]={
 1,1,0,1,1,1,1,1,1,1
,1,1,0,1,1,1,1,1,1,1
,1,1,0,0,1,0,0,0,1,1
,1,1,1,0,0,0,1,0,1,1
,1,0,1,1,1,0,0,0,1,1
,1,0,0,0,0,0,1,1,1,1
,1,1,1,1,1,0,1,1,1,1
,1,1,1,1,1,0,0,0,1,1
,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1};

int X=5, Y=1;

typedef struct stack *pstack;
struct stack
{
    int a, b;
    pstack prev;
    pstack next;
};

pstack list, f_list=NULL;

void push(int a, int b)
{
    //printf("add [%d,%d]\n", a, b);//шаг вперёд
    pstack t=malloc(sizeof(struct stack));
    t->prev=list;
    t->next=NULL;
    t->a=a;
    t->b=b;
    if (list != NULL) list->next=t; else f_list=t;
    list=t;
}

void pop()
{
    //printf("           del [%d,%d]\n", list->a, list->b);//шаг назад
    pstack t=list;
    list=t->prev;
    if (list!=NULL)
    {
        list->next=NULL;
        free(t);
    }
}

void printer()//вывод списка
{
    pstack t=f_list;
    while (t!=NULL)
    {
        printf("[%d,%d] -> ", t->a, t->b);
        t=t->next;
    }
    printf("\n\n");
}

void MakeList(int x, int y)
{
    if (x==X && y==Y)
    {
        push(x, y);
        printer();
        pop(x, y);
        return;
    }
    if (x > 0) if (mas[x - 1][y] == 0) {mas[x][y]=1; push(x, y); MakeList(x-1, y); pop(); mas[x][y]=0;}
    if (x < 9) if (mas[x + 1][y] == 0) {mas[x][y]=1; push(x, y); MakeList(x+1, y); pop(); mas[x][y]=0;}
    if (y > 0) if (mas[x][y - 1] == 0) {mas[x][y]=1; push(x, y); MakeList(x, y-1); pop(); mas[x][y]=0;}
    if (y < 9) if (mas[x][y + 1] == 0) {mas[x][y]=1; push(x, y); MakeList(x, y+1); pop(); mas[x][y]=0;}
}

int main()
{
    MakeList(2, 2);
    return 0;
}
eoln вне форума Ответить с цитированием
Старый 07.07.2011, 23:21   #25
Protected_fat
Пользователь
 
Регистрация: 04.07.2011
Сообщений: 21
По умолчанию

eoln, спасибо большое!
Protected_fat вне форума Ответить с цитированием
Старый 22.08.2014, 11:50   #26
ambrs
Новичок
Джуниор
 
Регистрация: 22.08.2014
Сообщений: 2
По умолчанию

подскажите пожалуйста, как исправить ошибку (error C2660: 'pop' : function does not take 2 arguments) при компиляции этого кода
ambrs вне форума Ответить с цитированием
Старый 22.08.2014, 12:20   #27
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Функция pop описана как не принимающая никаких аргументов, а ниже идёт вызов функции с двумя аргументами. Необходимо, чтобы количество аргументов было одинаковым и в описании, и в вызове.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 22.08.2014, 12:32   #28
ambrs
Новичок
Джуниор
 
Регистрация: 22.08.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Функция pop описана как не принимающая никаких аргументов, а ниже идёт вызов функции с двумя аргументами. Необходимо, чтобы количество аргументов было одинаковым и в описании, и в вызове.
спасибо. как я понимаю "int X=5, Y=1" это координаты выхода, а координаты входа принимает функция MakeList()?
ambrs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отыскание прохода по лабиринту в Delphi CyberGirl Помощь студентам 0 06.04.2011 08:20
Отыскание прохода по лабиринту В Delphi CyberGirl Помощь студентам 0 15.03.2011 14:20
проход по дереву на c++ Skilluser Помощь студентам 18 20.11.2010 19:34
С++. Отыскать проход по лабиринту Romer9999 Помощь студентам 1 17.06.2009 23:33
Проход по дереву. Ozerich Общие вопросы Delphi 1 05.10.2008 17:33