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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Lokomoss
13 / 2 / 0
Регистрация: 17.10.2012
Сообщений: 57
#1

Программа обхода конем шахматной доски -рекурсией с++ - C++

29.10.2012, 14:47. Просмотров 1901. Ответов 1
Метки нет (Все метки)

Пока писала ,наделала кучу ошибок. Компилятор сильно ругается. Понятия не имею,что ему не нравится. Везде пишет,что не объявлены переменные. Странно.Кто поможет разъяснить,что там не так и подправить в самой программе.Была бы очень благодарна
Код
#include <stdio.h>
#include <stdlib.h>
const n=8;
int x[n*n+1];
int y[n*n+1];
bool r[n*n+1];
double c;
int u;
void chess(int k){
 	c++;
	if(k==n*n) print();
	if((r[n*x[k]+y[k]+2]==false)&&(x[k]<=n-1)&&(y[k]<=n-2)){
		r[n*x[k]+y[k]+2]=true;
		x[k+1]=x[k]+1;
		y[k+1]=y[k]+2;
		chess(k+1);
		}
	if((r[n*(x[k]+1)+y[k]+1]==false)&&(x[k]<=n-2)&&(y[k]<=n-1)){
		r[n*(x[k]+1)+y[k]+1]=true;
		x[k+1]=x[k]+2;
		y[k+1]=y[k]+1;
		chess(k+1);
		}
	if((r[n*x[k]+y[k]-2]==false)&&(x[k]<=n-1)&&(y[k]>=2)){
		r[n*x[k]+y[k]-2]=true;
		x[k+1]=x[k]+2;
		y[k+1]=y[k]-1;
		chess(k+1);
		}
	if((r[n*x[k]+y[k]-2]==false)&&(x[k]<=n-1)&&(y[k]>=3)){
		r[n*x[k]+y[k]-2]=true;
		x[k+1]=x[k]+1;
		e[k+1]=y[k]-2;
		chess(k+1);
		}
	if((r[n*(x[k]-2)+y[k]-2]==false)&&(x[k]>=2)&&(y[k]>=3)){
		r[n*(x[k]-2)+y[k]-2]=true;
		x[k+1]=x[k]-1;
		y[k+1]=y[k]-2;
		chess(k+1);
		}
	if((r[n*(x[k]-3)+y[k]+1]==false)&&(x[k]>=3)&&(y[k]>=2)){
		r[n*(x[k]-2)+y[k]+1]=true;
		x[k+1]=x[k]-2;
		y[k+1]=y[k]-1;
		chess(k+1);
		}
	if((r[n*(x[k]-3)+y[k]+1]==false)&&(x[k]>=3)&&(y[k]<=n-1)){
		r[n*(x[k]-2)+y[k]+1]=true;
		x[k+1]=x[k]-2;
		y[k+1]=y[k]+1;
		chess(k+1);
		}
	if((r[n*(x[k]-2)+y[k]+2]==false)&&(x[k]>=2)&&(y[k]<=n-2)){
		r[n*(x[k]-2)+y[k]+2]=true;
		x[k+1]=x[k]-1;
		y[k+1]=y[k]+2;
		chess(k+1);
		}
	r[n*(x[k]-1)+y[k]]=false;
	x[k]=1;
	y[k]=0;
	c++;
	}
	void print(){
		int i;
		u++;
		for(i=1;i<=n*n;i++) printf("%lf %lf\n",x[k], y[k]);
		}
	void input(){
	int x0;
	int y0;
	printf("x0=%lf\n",&x0);
	printf("y0=%lf\n",&y0);
	for(i=0;i<=n*n;i++){
		x[k]=1;
		y[k]=0;
		}
	x[1]=x0;
	y[1]=y0;
	for(i=0;i<=n*n;i++) r[k]=false;
	}
int main(void){
	input();
	u=0;
	c=0;
	print();
	r[n*(x[1]-1)+y[1]]=true;
	chess(1);
	if(u==0) printf("resheniy net");
	return 0;
	}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2012, 14:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа обхода конем шахматной доски -рекурсией с++ (C++):

Обход шахматной доски конем - C++
Добрый вечер , форумчане. Передо мной стоит проблема написать программу на С++ (задача о ходе конем -довольно распространенная , конь...

Пройти конем по всем клеткам шахматной доски - C++
Всем доброго времени суток! Есть задача по которой нужно реализовать прохождения шахмотной фигуры конь по всем возможным позициям на...

Просчитать путь прохождение конем шахматной доски (с использованием эвристики доступности) - C++
Изучаю с++, наткнулся в учебнике на задачу - просчитать путь прохождение конем шахматной доски + для хардкорности использовать эвристику...

Нужно написать обход шахматной доски конем. На одну позицию можно стать один раз. Обеспечить алгоритм бектрекингу - C++
Добрый вечер! очень прошу помогите реализовать программу на с \ с + +.

Программа, которая выводит на экран изображение шахматной доски - C++
и снова привет! мне опять нужна ваша помощь. вот код, который жутко глючит((( { // Напишите программу, которая выводит на экран...

Обход доски конем - C++
Дана шахматная доска размером 8х8 и шахматный конь. Программа должна запросить у пользователя координаты клетки поля и поставить туда коня....

1
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2012, 18:51 #2
см комментарии:

Цитата Сообщение от Lokomoss Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void input(){
 int x0;// не задано значение
 int y0;// не задано значение
 printf("x0=%lf\n",&x0);//хотя здесь и пишется "x0= ", но выводится адрес переменной x0, а значение переменной x0 не задано
 printf("y0=%lf\n",&y0);// тоже самое
 for(i=0;i<=n*n;i++){
 x[k]=1;// почему x[k], а не x[i]? Переменной k в этой точке не видно
 y[k]=0;// тоже самое
 }
 x[1]=x0;// чему здесь равно x0? И чему станет равно x[1]
 y[1]=y0;// тоже самое
 for(i=0;i<=n*n;i++) r[k]=false;// про k писал выше
 }
int main(void){
 input();// начать читать нужно отсюда: вызвали функцию input(), идем в эту функцию
дальше не смотрел
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2012, 18:51
Привет! Вот еще темы с ответами:

Обход доски шахматным конем - C++
решал задачу &quot;Тур конем&quot;. : На шахматной доске размером n*n на поле с координатами x0,y0 находится конь - фигура , перемещающаяся по...

Необходимо написать программу обхода конем всего шахматного поля - C++
Доброго времени суток! Необходимо написать программу обхода конем всего шахматного поля. Конь должен посещать каждую клетку только...

Разрезание шахматной доски - C++
Написать программу нахождения всех способов разрезания шахматной доски с числом клеток nxn (n-четное) на две одинаковые по форме части (не...

Король шахматной доски - C++
Король шахматной доски размером 8х8 находится на коне в одной из клеток своего королевства. Он очень озабочен тем, что некоторые клетки его...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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