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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Lokomoss
2 / 2 / 0
Регистрация: 17.10.2012
Сообщений: 55
29.10.2012, 14:47     Программа обхода конем шахматной доски -рекурсией с++ #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;
	}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2012, 14:47     Программа обхода конем шахматной доски -рекурсией с++
Посмотрите здесь:

C++ Обход доски шахматным конем
Разрезание шахматной доски C++
Король шахматной доски C++
Обход шахматной доски конем C++
Нужно написать обход шахматной доски конем. На одну позицию можно стать один раз. Обеспечить алгоритм бектрекингу C++
C++ Программа, которая выводит на экран изображение шахматной доски
C++ Просчитать путь прохождение конем шахматной доски (с использованием эвристики доступности)
C++ Необходимо написать программу обхода конем всего шахматного поля

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 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(), идем в эту функцию
дальше не смотрел
Yandex
Объявления
29.10.2012, 18:51     Программа обхода конем шахматной доски -рекурсией с++
Ответ Создать тему
Опции темы

Текущее время: 00:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru