2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Шахматы
Сообщение23.04.2013, 10:45 


12/01/13
58
Заданы координаты короля и ладьи на шахматной доске. Определить бьют ли фигуры друг друга.
алгоритм я написал но не знаю как его сделать в си

xl yl zl ml xk yk zk mk - где l это координаты ладьи а k- короля.
так как ладья ходит по вертикае и горизонтале думаю достаточно только x y.

и вот собственно мой алгоритм

if (xl=xk) or (yl=yk) then
printf('Ладья бьет короля');
else
printf('Ладья не бьет короля');
if (xk=xl) or (yk=yl) or (zk=zl) or (mk=ml) then
printf('Король бьет ладью');
else
printf('Король не бьет ладью');
Меня смущает еще правильность кода

наверное правильней будет сравнивать координаты если xl<>xk то тогда ладья бьет короля

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 10:49 


10/04/12
705
Синтаксис не сишный, кроме того король может ходить по диагонали. Желательно почитать что-то по языку. Ну а так ставишь разные примеры и проверяешь работу алгоритма.

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 10:50 


12/01/13
58
я вот не знаю как на си сделать столько условий для короля, то что король может ходить по диагонали я учел это оси z и m

-- 23.04.2013, 12:53 --

если король ходит по диагонале тогда проверка бьет ли он ладью будет zk<>yl?

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 11:05 
Заслуженный участник


11/05/08
32166
kot070 в сообщении #714464 писал(а):
то что король может ходить по диагонали я учел это оси z и m

Это довольно нелепо. Надо просто проверить, находятся ли они рядом, т.е. различаются ли по каждой координате не более чем на единицу.

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 11:06 


12/01/13
58
а как это сделать?

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 13:06 


05/09/12
2587
Считаете 2 числа - модули разности координат фигур по вертикали и горизонтали. Дальше - условия: если они обе равны нулю, то фигуры одна на другой, если любая из них равна нулю, то ладья бьет короля, если обе они меньше или равны единице, то король бьет ладью.

ЗЫ придумайте за 2 секунды, какое условие будет для слона и какое для ферзя.

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 13:22 


12/01/13
58
я бы придумал, просто не умею играть в шахматы)

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 13:28 


05/09/12
2587
А читать в гугле правила ходов шахматных фигур тоже не умеете? Зато представьте, приносите вы преподавателю программу сдавать, а она считает не только для ладей, а ещё для слонов, коней и ферзей :-)

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 13:37 


12/01/13
58
т.е. if x1-x2=0 && y1-y2=0 then printf('oshibka')
if x1-x2=1 || y1-y2=1 then printf('korol pobit')
if x1-x2=1 && y1-y2=1 then printf('korol byet ladyu')
так? да преподаватель сама не умеет ни играть в шахматы ни преподавать ни тем более программировать на си

-- 23.04.2013, 15:40 --

я конечно понимаю что моя оценка ее знаний и умений как студента не может быть объективной, но когда спрашиваешь почему программа не работает или помочь разобраться что вообще нужно сделать и как, слышишь ищите в интернете невольно приходит такая мысль

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 13:59 


05/09/12
2587
kot070 в сообщении #714522 писал(а):
так?
Нет, не так. И если бы вы вместо поиска на форуме написали и проверили сами эту программу, вы бы самостоятельно в этом убедились.

ЗЫ не могу сформировать мнение о вашем преподавателе, ибо не общался, но по поводу посыла вас разбираться в интернет я её уже понимаю :-)

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 14:11 


10/04/12
705
Вы не умеете играть в шахматы, вы только начинаете изучать программирование. В этом случае выбирать в качестве упражнения задачу, связанную с шахматами, не лучший вариант.

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 14:19 


12/01/13
58
#include<stdio.h>
#include<conio.h>
#include<math.h>

int main()
{
int x1, x2, y1, y2;
printf("Vvedite x1");
printf("Vvedite x2");
printf("\n");
printf("Vvedite y1");
printf("Vvedite y2");
scanf("%d%d", &x1,&y1,&x2,&y2);
if ((x1-x2=0)&&(y1-y2=0))
printf("oshibka");
if ((x1-x2=1)||(y1-y2=1))
printf("korol pobit");
if ((x1-x2=1)&&(y1-y2=1))
printf("korol byet ladyu");
getch();
}
где я не прав?

-- 23.04.2013, 16:19 --

mustitz в сообщении #714538 писал(а):
Вы не умеете играть в шахматы, вы только начинаете изучать программирование. В этом случае выбирать в качестве упражнения задачу, связанную с шахматами, не лучший вариант.


так выпал вариант задания

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 14:22 
Заслуженный участник


11/05/08
32166
kot070 в сообщении #714543 писал(а):
так выпал вариант задания

попросите преподавательницу скорректировать вариант -- так, чтобы речь шла об игре в чапая

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 14:25 
Заслуженный участник
Аватара пользователя


13/08/08
14495
В чапая на порядки сложнее. Там механика.

 Профиль  
                  
 
 Re: Шахматы
Сообщение23.04.2013, 14:27 
Заслуженный участник


11/05/08
32166
kot070 в сообщении #714543 писал(а):
где я не прав?

Я Си не знаю, но, во всяком случае, к этому предложению

_Ivana в сообщении #714510 писал(а):
Считаете 2 числа - модули разности координат <...> если обе они меньше или равны единице

-- Вы прислушались как минимум невнимательно

-- Вт апр 23, 2013 15:28:19 --

gris в сообщении #714548 писал(а):
В чапая на порядки сложнее. Там механика.

Да; но, может, ТС знает правила хоть этой игры.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group