Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение цвета клетки на шахматной доске 
:(
    Опции темы
Enya
Дата 15.1.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Вот. Всего на шахматной доске получается 64 клетки. Программа запрашивает число и говорит какого цвета ячейка под этим номером. Я что-то выбилась из сил. smile
Цитата

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

Вот одна мысль по поводу этой задачи:
Код

#include <stdio.h>
    int main(void){
        int key, t, i, num[8][8];
            for(t=0; t<8; t++)
                for(i=0; i<8; i++){
                    num[t][i] = (t*8)+i+1;
                }                
                         printf("Введите номер ячейки:");
                         scanf("%i",&key);
            /* вывод матрицы */
            for(t=0; t<8; t++){
                for(i=0; i<8; i++)
                    printf("%3i ", num[t][i]);
                printf("\n");
            }
/*поиск */
            for(t=0; t<8; t++){
                for(i=0; i<8; i++){
            if(key==num[t][i]){
                 printf("Color - white\n");
           }else{ 
               printf("Color - black\n");
                   }
               }
            }               
        return 0;
    }

Вот что получается если ввести например номер 3:
Цитата

Введите номер ячёйки:3
  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
Color - black
Color - black
Color - white
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black
Color - black

Может у кого-нибудь родяться мысли? smile
Добавлено @ 23:28
Первая ячейка ЧЁРНАЯ.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
DeadSoul
Дата 15.1.2006, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Enya, а не пробовал нумеровать шахматные клетки по-другому? Задавать координаты клетки двумя числами(координаты по x и y).
При переходе на соседнюю клетку(по горизонтали или вертикали) цвет клетки меняется. Таким образом, цвет клетки получается равен:
( x%2 + y%2 )%2 = (x+y)%2, где (x,y) - координата клетки


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Enya
Дата 15.1.2006, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



DeadSoul, вашу бы мысль да кодом выразить?!


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
DeadSoul
Дата 15.1.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(Enya @ 15.1.2006, 23:37 Найти цитируемый пост)

DeadSoul, вашу бы мысль да кодом выразить?!

А чего тут выражать?


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Enya
Дата 16.1.2006, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



DeadSoul хотя бы кусок кода черкани...
smile


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Fin
Дата 16.1.2006, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 3
Всего: 10



Вот в эту формулу вводиш номер ячейки (num) в пределах от 1 до 64
Код
 
color=(((((num-1) / 8) & 1)+(((num-1) % 8) & 1)) & 1);

color приобретает значение 0 если ячейка черная и 1 если ячейка белая. Все остальное уже дело техники.




--------------------
Пролетал мимо.
PM MAIL   Вверх
Partizan
Дата 16.1.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



хех...а решение-то элементарное smile

советую завести двумерный массив типа, например bool, и не париться smile
то бишь 1- белый... 0 - чёрный smile
Код

void main()
{

bool CMarray[8][8] =  {
                                      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 
                                   };


int Num;
cout << "Enter the cell number \n";
cin >> Num;

CMarray[ Num/8 ][ Num%8-1 ]  ?  cout << "Black" : cout << "White";
}



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
DeadSoul
Дата 16.1.2006, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(Partizan @ 16.1.2006, 00:18 Найти цитируемый пост)

советую завести двумерный массив типа, например bool, и не париться

И зачем?


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Partizan
Дата 16.1.2006, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



CMarray[ Num/8 ][ Num%8-1 ] ? cout << "Black" : cout << "White";

за этим....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Fin
Дата 16.1.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 3
Всего: 10



Partizan У тебя в выражении маленькая логическая ошибка. счисление начинается с 1. Надо скорее всего так:
Код

CMarray[ (Num-1)/8 ][ (Num-1)%8 ] ? cout << "Black" : cout << "White";



--------------------
Пролетал мимо.
PM MAIL   Вверх
Enya
Дата 16.1.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Fin, Partizan ребята спасибо. smile
Но вот только на языке Си есть булевые переменные?
И вот ещё вопрос массивчик CMarray
Код

bool CMarray[8][8] =  {
                                      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 
                                   };
Не ручками же писать, можно ведь и вложенными циклами забить матрицу?!


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
DeadSoul
Дата 16.1.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(Partizan @ 16.1.2006, 00:40 Найти цитируемый пост)

CMarray[ Num/8 ][ Num%8-1 ] ? cout << "Black" : cout << "White";
за этим....

У меня нумерация идет с нуля и используется одномерный массив размера 64:
Код

bool IsBlack(int number)
{
  return (number%8 + number/8)&1;// % и / можно заменить &0xFF и >>8
}

if ( IsBlack(number) )
 cout<<"Black";
else
 cout<<"White";


В чем выражается премущество твоего варианта?


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Partizan
Дата 16.1.2006, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Собственно зря вы так smile... я же не говорил, что предложенное мной решение единственно...
Человек попросил код решения, я его написал вот и всё..... чей код использовать это уже его(её) личый выбор...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Helicopterr
Дата 16.1.2006, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



int number;
cin >> number;

if ( (number % 2) > NULL )
cout<<"Black";
else
cout<<"White";

smile

Partizan создавать массив 8х8 ради этой задачи? Я плакал. smile

Это сообщение отредактировал(а) Helicopterr - 16.1.2006, 02:53


--------------------
people can fly
PM MAIL   Вверх
Partizan
Дата 16.1.2006, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Helicopterr я бы советовал вам подумать, прежде чем писать оскорбления...
заметьте 1-я клетка имеет Чёрный цвет.... 9-я - белый....
а в вашем коде и 1 и 9 имеют чёрный цвет....
то бишь получется что столбцы с нечетными номерами чёрные, а с чётными - белые...

вот так... -1.....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0940 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.