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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
#1

Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). - C++

17.04.2009, 15:19. Просмотров 2682. Ответов 9
Метки нет (Все метки)

Помогите написать задачку на двумерные массивы.
Задача:
Шахматная доска.На ней расположены 2 черных коня и белый слон.Проверить сколько коней под ударом.(про расположение фигур в условии речи не идет,поэтому наверное оно произвольное).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2009, 15:19     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон).
Посмотрите здесь:

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

Определить сможет ли белый слон расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня нах.(c,d) - C++
ребята помогите пожалуйста!я в с++ вообще не бум-бум! у меня 2-е задачи с шахматами!а я даже играть не умею в них!помогите пожалуйста!я...

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
17.04.2009, 15:42     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #2
Для простоты примера я не пишу проверку совпадения вводимых координат и нахождение их в промежутке от 1 до 8

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
#include <iostream>
 
int main()
{
  int desk[8][8] = {0}; // доска 8х8. пусть незанятые клетки будут равны 0, клетка  с первым конем 1, со вторым конем 2.
  //координаты слона запишем в отдельные переменные
 
  int sx, sy; // координаты слона
  int x, y; 
  cout << "enter the position of SLON (x, y):\n"; // позиция слона
  cin >> sx;
  cin >> sy;
 
  cout << "enter the position of 1-st KON (x, y):\n"; // // позиция 2-го коня
  cin >> x;
  cin >> y;
  desk[x+1][y+1] = 1;
 
  cout << "enter the position of 2-nd KON (x, y):\n"; // // позиция 2-го коня
  cin >> x;
  cin >> y;
  desk[x+1][y+1] = 2;
 
  int udar = 0; // сколько под ударом
  
  int i, j; 
 
  // определяем кто под ударом 
  /*
  идея в следующем: если разности между X и Y координатами слона и коня равны,
  значит они находятся на одной диагонали, то есть под ударом слона
  */
  for (i = 0; i < 8; i++)
  {
     for (j = 0; j < 8; j++)
     {
        if (desk[i][j] == 1 && (sx-i) == (sy-j)) 
           udar++;
 
        if (desk[i][j] == 2 && (sx-i) == (sy-j))
           udar++;
     }
  }
 
}

А вообще, гораздо удобнее вообще не использовать массивы. Так же, как и координаты слона, записать в отдельные переменные координаты коней и осуществить проверку разностей координат.
unStatiK
Заблокирован
17.04.2009, 15:46     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #3
Цитата Сообщение от Хакер Посмотреть сообщение
Помогите написать задачку на двумерные массивы.
Задача:
Шахматная доска.На ней расположены 2 черных коня и белый слон.Проверить сколько коней под ударом.(про расположение фигур в условии речи не идет,поэтому наверное оно произвольное).
Вот еще одно решение

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
66
67
68
69
70
71
72
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
  int arr[8][8];
  int a1,a2,b1,b2,c1,c2,j,i,sum_horse = 0;
  for(i=0;i<8;i++)
  {
    for(j=0;j<8;j++)
       arr[i][j]=0;
    }
  printf("Vvedite raspolozhenie Slona : ");
  scanf("%d %d",&a1,&a2);
  arr[a1][a2] = 1;
  printf("\nVvedite raspolozhenie 1 Konya : ");
  scanf("%d %d",&b1,&b2);
  arr[b1][b2] = 1;
  printf("\nVvedite raspolozhenie 2 Konya : ");
  scanf("%d %d",&c1,&c2);
  arr[c1][c2] = 1;
    i = a1 - 1;
    j = a2 - 1;
  while((i>0) || (j>0))
     {
        if(arr[i][j]==1)
           {
                sum_horse++;
                }
                i--;
                j--;
        }
 
    i = a1 + 1;
    j = a2 - 1;
  while((i<8) || (j>0))
     {
        if(arr[i][j]==1)
           {
                sum_horse++;
                }
                i++;
                j--;
        }
 
    i = a1 - 1;
    j = a2 + 1;
  while((i>0) || (j<8))
     {
        if(arr[i][j]==1)
           {
                sum_horse++;
                }
                i--;
                j++;
        }
    i = a1 + 1;
    j = a2 + 1;
  while((i<8) || (j<8))
     {
        if(arr[i][j]==1)
           {
                sum_horse++;
                }
                i++;
                j++;
        }
 
    printf("\n horse : %d\n",sum_horse);
  system("PAUSE");
  return 0;
}
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
17.04.2009, 15:50     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #4
unStatiK, что-то твой алгоритм тяжеловат для моего мозга
прокомментируй, пожалуйста, что происходит в циклах. интересно, в чем идея )
unStatiK
Заблокирован
17.04.2009, 15:56     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #5
Цитата Сообщение от Deicider Посмотреть сообщение
unStatiK, что-то твой алгоритм тяжеловат для моего мозга
прокомментируй, пожалуйста, что происходит в циклах. интересно, в чем идея )
идея в следуюущем : все клетки сначало забиваем 0 , а там где стоят фигуры значением 1 ... ну и проверка по каждой диагонале , если равна 1 значит там стоит фигура (то есть конь) и суммируем количество коней .
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
17.04.2009, 16:00     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #6
Получается, что ты проверяешь наличие коня на диагонали доски, но не обязательно же слон и кони будет стоять именно на диагонали. Например (x - пусто, с - слон, к - конь):
х х х х х х х х
х х х х С х х х
х х х х х х х х
х х х х х х х х
х К х х х х х К
х х х х х х х х
х х х х х х х х

на диагоналях никто не стоит, но под ударом два коня находятся

И еще: почему у тебя четыре цикла? диагонали-то всего две
unStatiK
Заблокирован
17.04.2009, 16:04     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #7
Цитата Сообщение от Deicider Посмотреть сообщение
Получается, что ты проверяешь наличие коня на диагонали доски, но не обязательно же слон и кони будет стоять именно на диагонали. Например (x - пусто, с - слон, к - конь):
х х х х х х х х
х х х х С х х х
х х х х х х х х
х х х х х х х х
х К х х х х х К
х х х х х х х х
х х х х х х х х

под ударом два коня )

И еще: почему у тебя четыре цикла? диагонали-то всего две
я имел ввиду диагонали удара Слона ....а не шахматной доски
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
17.04.2009, 16:17     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #8
дошло )))
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
17.04.2009, 16:48  [ТС]     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #9
А вообще, гораздо удобнее вообще не использовать массивы
Задание на массивы)
Спасибо Deicider и unStatiK,буду сидеть разбираться в написанном)Почему я такой нуб в с++...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2009, 18:34     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон).
Еще ссылки по теме:

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

Шахматная доска и строка - C++
Есть 3 задачки, немного не соображу как их решить. Помогите горе-программисту :) 1) Поле шахматной доски определяется парой...

Шахматная доска Turbo C++ - C++
Нужно нарисовать и закрасить. Вот нарисовал, но как закрасить клетки через раз? #include&lt;graphics.h&gt; #include&lt;conio.h&gt; int...

Шахматная доска, найти ошибки в коде - C++
Здравствуйте, нужно вывести шахматную доску, у меня куча ошибок и я не могу никак сделать // Шахматная доска #include &lt;graphics.h&gt; ...

Заполнить квадратную матрицу по правилу «шахматная доска» - C++
Помогите заполнить квадратную матрицу порядка N по следующему правилу: «шахматная доска» - чередовать в каждой строке числа 0 и 1, причем...


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

Или воспользуйтесь поиском по форуму:
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
26.04.2009, 18:34  [ТС]     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). #10
#include <iostream>
using namespace std;
int main()
{
int desk[8][8] = {0}; // доска 8х8. пусть незанятые клетки будут равны 0, клетка с первым конем 1, со вторым конем 2.
//координаты слона запишем в отдельные переменные

int sx, sy; // координаты слона
int x, y;
cout <<"enter the position of SLON (x, y):\n"; // позиция слона
cin >> sx;
cin >> sy;

cout << "enter the position of 1-st KON (x, y):\n"; // // позиция 2-го коня
cin >> x;
cin >> y;
desk[x+1][y+1] = 1;

cout << "enter the position of 2-nd KON (x, y):\n"; // // позиция 2-го коня
cin >> x;
cin >> y;
desk[x+1][y+1] = 2;

int udar = 0; // сколько под ударом

int i, j;

// определяем кто под ударом
/*
идея в следующем: если разности между X и Y координатами слона и коня равны,
значит они находятся на одной диагонали, то есть под ударом слона
*/
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
{
if (desk[i][j] == 1 && (sx-i) == (sy-j))
{cout<<"1-i konb pod udarom\n";}

if (desk[i][j] == 2 && (sx-i) == (sy-j))
{cout<<"2-i konb pod udarom\n";}
}
}
system("pause");
}
Помогите нарисовать алгоритм к этой проге...У меня немного кривой выходит.

Добавлено через 3 часа 16 минут 45 секунд
Помогите с алгоритмом плззз.......
Yandex
Объявления
26.04.2009, 18:34     Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон).
Ответ Создать тему
Опции темы

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