Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2014, 19:52   #1
Александр_Киприн
Новичок
Джуниор
 
Регистрация: 23.02.2014
Сообщений: 2
По умолчанию Visual С++, VCExpress. Решить задачу.

Я первокурсник, практически ничего не понимаю в C++. Хотелось бы, чтобы мне написали код для решения задачи. Вот задача, которую нужно решить.

Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали при счете слева направо, второе – номер горизонтали при счете снизу вверх. Даны натуральные числа k, l, m, n, каждое из которых не превосходит восьми. Определить, являются ли поля (k,l) и (m,n) полями одного цвета.
Александр_Киприн вне форума Ответить с цитированием
Старый 23.02.2014, 20:13   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,381
По умолчанию

Начните не с С++, а с того, что нарисуйте доску и нанесите координаты.
Попробуйте понять простое свойство, которое связывет цвет клетки с ее координатами.
Знание операции сложения и понимание того, как определить четность числа, или его нечетность - приветствуются.
Если эта часть задачи была понята, то в Google или в Яндексе пишем запрос на функцию, с помощью которой и можно решить задачу.
Тут все не просто, а очень просто.



Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.02.2014, 21:46   #3
Александр_Киприн
Новичок
Джуниор
 
Регистрация: 23.02.2014
Сообщений: 2
Печаль

Спасибо. Но этого мне мало. Я дуб дубом. Я понял, что (чётное,нечётное) либо (нечётное,чётное) дают белый цвет, а (чётн,чётн) либо (нечётн,нечётн) дают чёрный цвет. Дальше я не понял, что я должен делать.
Александр_Киприн вне форума Ответить с цитированием
Старый 23.02.2014, 22:17   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Хорошо, а теперь нужно посмотреть на разницу по каждой из координат. Если разница по координате нечетна, то цвет меняется. Если по обеим координатам разница нечетна, то цвет не изменится (он сменит цвет два раза). В принципе, это все "загоняется" в одну простую формулу.

UPD
ViktorR, и правда, не заметил этого - каждую задачку можно решить кучей способов
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 23.02.2014 в 23:04.
BDA вне форума Ответить с цитированием
Старый 23.02.2014, 22:50   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,381
По умолчанию

1. Ваш основной вопрос:
Цитата:
Определить, являются ли поля (k,l) и (m,n) полями одного цвета.
2. Я не просто сказал о сложении. Посмотрите на сумму координат ячейки, а не на собственно цифры, описывающие координаты.
3. Таким образом, для получения ответа достаточно проверить, что сумма координат одной ячейки обладает таким же свойством, как и второй.
Если Да, то они одного цвета, иначе ...
Цитата:
Но этого мне мало. Я дуб дубом.
Самокритика - это не плохо, вот только не тут.
Просто опиши переменные, напиши код для чтения координат с клавиатуры. Для начала можно данные (координаты ячеек) задать в программе.
Получи сумму координат одной ячейки, а затем второй.
Получи остаток от деления на 2 этих сумм (целочисленное деление) и сравни их.

PS: Я в С++ (и не только в нем) слаб и потому не могу дать готовое решение. Тут ведь важен алгоритм, а остальное бери прямо из учебника.
Там, обычно, примеров более чем достаточно.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 24.02.2014, 15:54   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

если числа k и m одной четности И l и n одной четности, то поля одного цвета
четность определяется нахождением остатка от деления на 2.
можно завести 4 переменных-флага, в которых будет указываться является ли каждое из чисел k, l, m, n четным.

Код:
#include <stdio.h>

int main()
{
int k,l,m,n;
int f1 (0), f2 (0), f3 (0), f4 (0);

scanf("%d", &k); 
scanf("%d", &l); 
scanf("%d", &m); 
scanf("%d", &n);

if (k % 2 == 0 ) f1= 1;
if (l %2 == 0) f2 = 1;
if (m %2 == 0) f3 = 1;
if (n%2 == 0) f4 =1;

if ( 
(f1 == 1 && f3 == 1 && f2 == 1 && f4 == 1) || 
(f1 == 0 && f3 == 0 && f2 == 0 && f4 == 0) ||
(f1 == 0 && f3 == 0 && f2 == 1 && f4 == 1) || 
(f1 == 1 && f3 == 1 && f2 == 0 && f4 == 0) ||
(f1 == 0 && f3 == 1 && f2 == 1 && f4 == 0) ||
(f1 == 1 && f3 == 0 && f2 == 0 && f4 == 1)
)
printf("+\n"); // поля одного цвета


}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"

Последний раз редактировалось challengerr; 24.02.2014 в 16:12.
challengerr вне форума Ответить с цитированием
Старый 24.02.2014, 21:22   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,381
По умолчанию

Прошу заметить, что это слишком уж ...
Достаточно сложить координаты k, l для одного поля и m, n для второго.
Например имеем:
1. Ввести координаты первого поля: (k, l)
2. Ввести координаты второго поля: (m, n)
3. Если ((k + l) % 2) = ((m + n) % 2) то одного цвета, а инче - разного.
Код:
#include <stdio.h>

int main()
{
int k,l,m,n;

scanf("%d", &k); 
scanf("%d", &l); 
scanf("%d", &m); 
scanf("%d", &n);

if (((k + l) % 2) == ((m + n) % 2))
   printf("+\n"); // поля одного цвета;
else
   printf("-\n"); // поля разного цвета
}
Переработал, как вариант.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решить задачу на Visual C++ [ср00чно, платно] propoker23 Общие вопросы C/C++ 1 28.12.2011 22:53
Решить задачу на Visual C++ [ср00чно, платно] propoker23 Фриланс 3 28.12.2011 19:52
Помогите пожалуйста решить задачу по с++ visual l.e.n.a Помощь студентам 1 19.01.2009 23:37