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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.85
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
#1

Шахматная доска - C++

11.07.2012, 20:26. Просмотров 3943. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шахматная доска (C++):

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

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

Шахматная доска - C++
Даны координаты двух различных полей шахматной доски x1,x2,y1,y2(Целые числа лежащие в диапазоне от 1 до 8). Проверить истинность...

шахматная доска - C++
Здравствуйте! Есть задача: дана шахматная доска размером NxN, нужно расставить N ферзей таким образом, чтобы они не атаковали друг...

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

Шахматная доска - C++
Шахматная доска содержит 8x8 клеток. Горизонтали и вертикали обозначаются цифрами 1-8. Написать программу, проверяющую, можно ли с первой...

14
BRcr
4008 / 2297 / 155
Регистрация: 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
4008 / 2297 / 155
Регистрация: 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
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 734
12.07.2012, 06:36 #6
насколько я помню условие задачи, обойти нужно таким образом, чтобы побывать в каждой клетке только по одному разу...
0
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
12.07.2012, 08:29  [ТС] #7
да, условие такое, только все это надо проделать без эвристики, просто заставить пройтись по всем клеткам
0
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 734
12.07.2012, 08:32 #8
попробуйте тогда написать в лоб.. но я сомневаюсь, что она не встанет в определенный момент... используйте рекурсию, чтобы избежать зацикливания.
0
Андрей89
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 37
12.07.2012, 08:34  [ТС] #9
что то подобное я и пробовал, но вот все что у меня получилось(
0
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 734
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
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 734
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
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 734
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2012, 08:58
Привет! Вот еще темы с ответами:

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

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

Шахматная доска - C++
Ребята, помогите! Есть код на С++, выводящий на экран шахматную доску, нужно его дополнить обозначением клеток (по горизонтали 1,2,3... , и...

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
12.07.2012, 08:58
Ответ Создать тему
Опции темы

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