Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
1

Шахматная доска

11.07.2012, 20:26. Просмотров 5022. Ответов 14
Метки нет (Все метки)

Есть шахматная доска (8*8). Нужно с помощью фигуры "конь" обойти все 64 клетки шахматной доски.
Что-то скопипастил, но работать не хочет. Помогите пожалуйста разобраться. и еще в конце требуется вывести на экран доску шахматную с номерами ходов "коня" на каждой клетке


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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
main()
{
int ari[8][8];
  for (int i=0; i<8; i++);
  for (int j=0; j<8, j++);
ari[i][j]=0;
int counter=0;
printf("Введите горизонтальную координату (0-7)\n");
cin>>x;
printf("Введите вертикальную координату (0-7)\n");
cin>>y;
 
int end=1;
   while (end) {int xx=x; int yy=y;
{
   int way=rand()%8;
   if (way==0);
{
   xx=x+2;
   yy=y+1;
}
else if (way==1);
   xx=x-2;
   yy=y-1;
}
else if (way==2)
   xx=x-2;
   yy=y+1;
}
else if (way==3);
   xx=x+2;
   yy=x-1;
}
else if (way==4);
   xx=x+1;
   yy=y-2;
}
else if (way==5);
   xx=x-1;
   yy=y-2;
}
else if (way==6);
   xx=x+1;
   yy=y+2;
}
else if (way==7);
   xx=x-1;
   yy=y+2;
}
 if (xx>=0 && xx<8 && yy>=0 && yy<8);
{
    counter++;
    x=xx;
    y=yy;
ari[x][y]++;}
 int k=0;
 for (int i=0; i<8; i++);
 for (int j=0; j<8; j++);
    if (ari[i][j]>0;
    k++;
    if (k==64);
    end=0;
}
Добавлено через 1 час 15 минут
ну никто разве не может помочь?((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2012, 20:26
Ответы с готовыми решениями:

Шахматная доска
Шахматная доска содержит 8x8 клеток. Горизонтали и вертикали обозначаются...

шахматная доска
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не...

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

Шахматная доска
Даны координаты двух различных полей шахматной доски x1,x2,y1,y2(Целые числа...

шахматная доска
Здравствуйте! Есть задача: дана шахматная доска размером NxN, нужно...

14
BRcr
4017 / 2307 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
11.07.2012, 21:05 2
C синтаксисом беда - очень много лишних точек с запятой.
С логикой непорядок - прежде чем "сделать ход" конем в том или ином направлении, неплохо бы проверить, можно ли такой ход вообще сделать, не покинет ли фигура доску?
0
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
11.07.2012, 21:10  [ТС] 3
if (xx>=0 && xx<8 && yy>=0 && yy<8);
разве вот не это отвечает за "невыход за пределы"?
0
BRcr
4017 / 2307 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
11.07.2012, 21:26 4
Нет. Ход-то уже сделан, проверка пост-фактум в данном случае бесполезна.
0
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
11.07.2012, 21:28  [ТС] 5
честно говоря я в этом полный ноль, начали изучать ровно неделю назад, и уже задали вот такое задание по практике(
0
salam
176 / 157 / 29
Регистрация: 10.07.2012
Сообщений: 768
12.07.2012, 06:36 6
насколько я помню условие задачи, обойти нужно таким образом, чтобы побывать в каждой клетке только по одному разу...
0
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
12.07.2012, 08:29  [ТС] 7
да, условие такое, только все это надо проделать без эвристики, просто заставить пройтись по всем клеткам
0
salam
176 / 157 / 29
Регистрация: 10.07.2012
Сообщений: 768
12.07.2012, 08:32 8
попробуйте тогда написать в лоб.. но я сомневаюсь, что она не встанет в определенный момент... используйте рекурсию, чтобы избежать зацикливания.
0
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
12.07.2012, 08:34  [ТС] 9
что то подобное я и пробовал, но вот все что у меня получилось(
0
salam
176 / 157 / 29
Регистрация: 10.07.2012
Сообщений: 768
12.07.2012, 08:37 10
Цитата Сообщение от Андрей89 Посмотреть сообщение
int way=rand()%8;
детерминированность 80-ого лэвела...
0
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
12.07.2012, 08:47  [ТС] 11
хорошо. А подскажите просто вот что, правильно ли я подключил библиотеки и что бы вывести на экран таблицу с результатами ходов требуется просто дописать print ari?
0
salam
176 / 157 / 29
Регистрация: 10.07.2012
Сообщений: 768
12.07.2012, 08:50 12
голубчик мой, у Вас матрица... нужно циклом выводить
C++
1
2
for(от первой строки до последней)
for(от первого столбца итой строки до последнего)
вложенные циклы...
1
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
12.07.2012, 08:55  [ТС] 13
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
printf("n%d",a[i][j])
то есть вот так? не уверен что внутри цикла нужно "int"
0
salam
176 / 157 / 29
Регистрация: 10.07.2012
Сообщений: 768
12.07.2012, 08:57 14
то есть вот так...
C++
1
2
3
4
5
6
for(int i=0; i < 8; i++)
{
for(int j=0; j < 8; j++)
cout << a[i][j] << " ";
cout << endl;
}
1
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
12.07.2012, 08:58  [ТС] 15
Большое спасибо)
0
12.07.2012, 08:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2012, 08:58

Шахматная доска
Заполнить двумерный массив единицами и нулями таким образом, чтобы единицы...

Шахматная доска
Ребят, сейчас друг сидит на собеседовании, ему досталась какая-то слишком...

С++ Шахматная доска
Помогите пожалуйста с заданием. Нужно сделать шахматную доску 16*16 и...


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

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

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