Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 4

Задачка с шахматной доской: выяснить, являются ли поля (k, e) и (m, n) полями одного цвета

23.10.2012, 14:10. Показов 2187. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число - номер вертикали (при счете слева на право), второе число - номер горизонтали (при счете снизу вверх).Даны натуральные числа k, e, m, n каждое из которых не превосходит восьми. Требуется:
a) выяснить являются ли поля (k, e) и (m, n) полями одного цвета?
b) выяснить, можно ли с поля (k, e) одним ходом ладьи попасть на поле (m, n). Если нет, то выяснить, как это можно сделать за два хода (указать поле, на которое приводит первый ход).

Помогите бедному студенту. Заранее благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2012, 14:10
Ответы с готовыми решениями:

Поле шахматной доски. Определить, являются ли поля (a, b) и (с, d) полями одного цвета
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число-номер вертикали(при счете...

Шахматная доска. Выяснить, являются ли поля (k, l) и (m, n) полями одного цвета
Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе - номер горизонтали. Даны...

Выяснить, являются ли поля (к, 1) и (m, n) шахматной доски полями одного цвета
Выяснить, являются ли поля (к, 1) и (m, n) шахматной доски полями одного цвета. по паскалу. пожалуйста помогите

8
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
23.10.2012, 16:07
Цитата Сообщение от LaiT- Посмотреть сообщение
a) выяснить являются ли поля (k, e) и (m, n) полями одного цвета?
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            int[,] checkMatrix = new int[8, 8];
            int tmp = 0;
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    checkMatrix[i, j] = tmp;
                    tmp = tmp == 0 ? 1 : 0;
                    Console.Write(checkMatrix[i, j] + " ");
                }
                tmp = tmp == 0 ? 1 : 0;
                Console.WriteLine();
            }
            int k = Convert.ToInt32(Console.ReadLine());
            int e = Convert.ToInt32(Console.ReadLine());
            int m = Convert.ToInt32(Console.ReadLine());
            int n = Convert.ToInt32(Console.ReadLine());
 
            if (checkMatrix[7 - e + 1, k - 1] == checkMatrix[7 - n + 1, m - 1])
            {
                Console.WriteLine("Same colors.");
            }
            else
            {
                Console.WriteLine("Different colors");
            }
        }
    }
}
0
11 / 11 / 5
Регистрация: 19.10.2012
Сообщений: 28
23.10.2012, 16:33
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int k, e; // первая клетка(к - слева направо, е - снизу вверх)
            int m, n; // вторая клетка(m - слева направо, n - снизу вверх)
 
            // доска(1 - белая, 0 - черная)
            int[,] doska = {{1,0,1,0,1,0,1,0},{0,1,0,1,0,1,0,1},{1,0,1,0,1,0,1,0},{0,1,0,1,0,1,0,1},
                               {1,0,1,0,1,0,1,0},{0,1,0,1,0,1,0,1},{1,0,1,0,1,0,1,0},{0,1,0,1,0,1,0,1}};
 
            Console.WriteLine("Координаты первой клетки:");
            Console.Write("k=");
            k = int.Parse(Console.ReadLine());
            Console.Write("e=");
            e = int.Parse(Console.ReadLine());
            Console.WriteLine("Координаты второй клетки:");
            Console.Write("m=");
            m = int.Parse(Console.ReadLine());
            Console.Write("n=");
            n = int.Parse(Console.ReadLine());
 
            if (doska[k, e] == doska[m, n]) Console.WriteLine("Клетки одного цвета.");
            else Console.WriteLine("Клетки разных цветов.");
 
            if (k == m || e == n) Console.WriteLine("Ладья может попасть на вторую клетку за 1 ход");
            else
            {
                Console.WriteLine("Ладья не может попасть на вторую клетку за 1 ход");
                if (k > m) Console.WriteLine("Первый ход на клетку ({0}:{1})", m, e);
                else Console.WriteLine("Первый ход на клетку ({0}:{1})", m, e);
            }
        }
    }
}
Вроде работает

Добавлено через 9 минут
Цитата Сообщение от toshich Посмотреть сообщение
C#
1
2
if (k > m) Console.WriteLine("Первый ход на клетку ({0}:{1})", m, e);
     else Console.WriteLine("Первый ход на клетку ({0}:{1})", m, e);
Чето я тут перемудрил
0
Egin
24.10.2012, 01:24
ну а вот что с ладьей придумал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (k == m || e == n)
            {
                Console.WriteLine("Ladja!");
            }
            else
            {
                Console.WriteLine("seychas budet Ladja'");
                k = m;
                e = n;
                if (k == m || e == n)
                {
                    Console.WriteLine("Ladja!");
                }
            }
это к первому листингу
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 7
14.11.2012, 11:39
а если эту задачу делать на С++,то как можно изменить вашу задачу лучше?
0
Заблокирован
14.11.2012, 12:27
Для a)
C#
1
2
3
4
5
6
7
            //клетки (k, e) и (m, n)
            int k = 0, m = 0, e = 1, n = 1;
            if ((k + m) % 2 == (e + n) % 2)//формула
                Console.WriteLine("одного цвета");
            else
                Console.WriteLine("разного  цвета");
            Console.ReadLine();
Цитата Сообщение от Egin Посмотреть сообщение
C#
1
2
3
 k = m;
 e = n;
 if (k == m || e == n)
Нужно изменять либо одну координату либо другую, а здесь меняются сразу две.
1
Egin
15.11.2012, 13:32
Dzhej-Dzhej, спасибо, перечитал еще раз условие задачи.
8 / 8 / 0
Регистрация: 17.11.2012
Сообщений: 159
17.11.2012, 01:49
предыдущее решение лучше, но...
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
using System;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            int i, j, k, l, r;
            bool[,] x = new bool[8, 8];
            Console.WriteLine("введите данные в следующем порядке:i,j,k,l");
            i = int.Parse(Console.ReadLine());
            j = int.Parse(Console.ReadLine());
            k = int.Parse(Console.ReadLine());
            l = int.Parse(Console.ReadLine());
            for (ushort s = 0; s < 8; s++)
            {
                if ((s & 1) != 1)
                    r = 0;
                else r = 1;
 
                for (; r < 8; r += 2)
                    x[s, r] = true;
 
                    
            }
            
            if (x[i, j] == x[k, l])
                Console.WriteLine("одинаковый цвет");
            else Console.WriteLine("разный цвет");
 
            if (i == k || j == l)
                Console.WriteLine("можно");
            else Console.WriteLine("нельзя, надо сходить в {0},{1} затем {0},{2}", k, j, l);
                
 
            Console.ReadLine();
 
        }
    }
}
буду благодарен, если кто-нибудь скажет в чем недостатки моего кода, как можно улучшить.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.11.2012, 02:10
C#
1
2
3
for(int i = 0,flag = true; i < 8; i++)
   for(j = 0; j < 8; j++; flag = !flag)
      x[i,j] = flag;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2012, 02:10
Помогаю со студенческими работами здесь

Выяснить, являются ли поля шахматной доски полями одного цвета
Выяснить, являются ли поля (к , л) и (м , н) шахматной доски полями одного цвета.

Являются ли поля шахматной доски полями одного цвета
Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номер вертикали, а второе — номер горизонтали. Даны...

Являются ли поля (a, b) и (c, d ) шахматной доски полями одного цвета
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при...

Определить: являются ли эти два поля шахматной доски полями одного цвета?
Помогите: координаты любого поля шахматной доски могут быть заданы парой натуральных чисел, не превосходящих восьми. Дано четыре числа (K ,...

Шахматы: Выяснить, являются ли поля (k, l) и (m, n) полями одного цвета
Помогите плз создать программу на паскале Поле шахматной доски определятся парой натуральных чисел, каждое из которых не превосходит...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru