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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2013, 14:14   #1
dzels
 
Регистрация: 06.06.2013
Сообщений: 4
Вопрос Выход из лабиринта /C++

Код:
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
int mas[5][5],per;
int Lab(int x, int y)
{
	if(mas[x][y]==0)
		return 0;
	
	mas[x][y]=2;
	if(mas[4][4]==2)
	{
		per=1;
		return 0;
	}
	if(mas[x+1][y]==1)
		Lab(x+1,y);
	if(mas[x][y+1]==1)
		Lab(x,y+1);
	if(mas[x-1][y]==1)
		Lab(x-1,y);
	if(mas[x][y-1]==1)
		Lab(x,y-1);
	mas[x][y]=1;
}
int main()
{
	int a, b;
	while(a<0||a>5||b<0||b>5)
	{
	cout<<"Vvedite nomer elementa: ";
	cin>>a>>b;
	}
	srand(time(NULL));
	for(int i=0;i<5;i++)
	{
		for(int j=0;j<5;j++)
		{
			mas[i][j]=rand()%2;
		}
	}
	for(int e=0;e<5;e++)
	{
		for(int u=0;u<5;u++)
		{
			cout<<mas[e][u]<<"\t\t";
		}
	}
	if(mas[a-1][b-1]==0)
		per=0;
	else
		Lab(a-1,b-1);
	if(per==0)
		cout<<"Vyhoda net! ";
	if(per==1)
		cout<<"Vyhod est! ";
	return 0;
}
Все работает, но если массив такой:
1 0 0 0 0 1
1 1 1 1 1 1
0 0 0 1 1 1
0 1 0 1 1 1
0 0 0 1 1 1
и указаная точка 4х4
если же массив такой
1 0 0 0 0 1
1 1 1 1 1 1
0 0 0 1 1 1
0 1 0 1 1 0
0 0 0 1 1 1
и та же точка, пишет выхода нет(
Помогите!

Последний раз редактировалось Stilet; 06.06.2013 в 14:30.
dzels вне форума Ответить с цитированием
Старый 06.06.2013, 14:35   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Помогите!
И чем Вам помочь? У Вас массив 5х6 (почему-то) - это раз, алгоритм поиска выхода как-то не слишком понятен - это два. Используется глобальная переменная, которая может остаться неинициализированной - это три.
Влепите в начало Lab() строчку
Код:
std::cout << "Lab(" << x << ", " << y << ")" << std::endl;
Будете хотя бы видеть, что происходит.
Abstraction вне форума Ответить с цитированием
Старый 06.06.2013, 15:14   #3
dzels
 
Регистрация: 06.06.2013
Сообщений: 4
По умолчанию

Все разобрался! Спасибо Abstraction'у за ответ, помощь нужна была в том что программа выводила правильный ответ, если последние 4 элемента были 1, если же один из них был 0 - писало что выхода нет. Проблемма была в строке mas[x][y]=1; - я ее просто удалил и все.
dzels вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация лабиринта в Delphi dancer1 Помощь студентам 4 21.02.2012 07:09
Кнопка Выход(на выход Из программы)С++ Напишите код ProGec4 Общие вопросы C/C++ 3 19.02.2012 15:36
Создание лабиринта.Delphi 7 savraska Помощь студентам 0 02.06.2010 12:43
Алгоритм прохождения лабиринта PAVEL315 Общие вопросы Delphi 13 02.01.2010 01:22
Выход из лабиринта karamelka87 Общие вопросы C/C++ 9 27.01.2009 23:49