Консультация № 193757
25.10.2018, 17:28
0.00 руб.
0 3 1
Ув.эксперты! Используя язык С помогите решить задачу: дано два числа, которые есть номером ряда и столбика на шахматной доске. Определить какого цвета клеточка с заданными координатами. Спасибо!

Обсуждение

давно
Академик
20764
1861
25.10.2018, 17:46
общий
26.10.2018, 09:56
А в чём вопрос?
Код:
int is_black(unsigned row, unsigned column) { /* всё нумеруется с единицы, хотя с 0 будет то же самое */
return !((row ^ column) & 01);
/* хорошо,return (row+column)%2 == 0; */
}

Обвес пишите самостоятельно
давно
Старший Модератор
17042
808
30.10.2018, 06:49
общий
Адресаты:
Оформите ответ?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Академик
20764
1861
30.10.2018, 09:57
общий
это ответ
Здравствуйте, lalka!

Исходные данные вводятся через параметры вызова программы

Проверено на gcc под linux

Код:
#include <stdlib.h>
#include <stdio.h>

/* возвращает ненулевое значение, если поле чёрное */
int is_black(unsigned row, unsigned column) { /* всё нумеруется с единицы, хотя с 0 будет то же самое */
return !((row ^ column) & 01);
/* хорошо, return (row+column)%2 == 0; */
}

int main (int argc, char **argv) {
unsigned row, column;
int black;
if (argc != 3) {
fprintf (stderr, "Вызов: %s номер-ряда номер-колонки\n", argv[0]);
return 1;
}
/* корректность вводимых данных не проверяю */
row = strtoul (argv[1], NULL, 10);
column = strtoul (argv[2], NULL, 10);
black = is_black (row, column);
printf ("поле %u,%u %s\n", row, column, black ? "чёрное" : "белое");
return 0;
}


Код:
[xbatob@pink Polygon]$ ./a.out 
Вызов: field_color номер-ряда, номер-колонки
[xbatob@pink Polygon]$ ./a.out 1 2
поле 1,2 белое
[xbatob@pink Polygon]$ ./a.out a b
поле 0,0 чёрное

5
Форма ответа