Russian Qt Forum
Ноябрь 23, 2024, 12:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу понять как решить  (Прочитано 4762 раз)
Fast7148
Гость
« : Декабрь 05, 2010, 20:31 »

Задача заключается в том что есть шахматное поле нужно ввести 2 клетки и программа должна опр какого цвета клетка и надо решить на codeblocks как console application помогите как?
Записан
SimpleSunny
Гость
« Ответ #1 : Декабрь 05, 2010, 23:10 »

А что пробовали и что не получается?
Записан
Nimbus
Гость
« Ответ #2 : Декабрь 06, 2010, 10:31 »

А подробнее можно? А то такие вопросы требуют ответа в виде ещё кучи вопросов, либо сразу готового решения.
Записан
Fast7148
Гость
« Ответ #3 : Декабрь 06, 2010, 14:33 »

А подробнее можно? А то такие вопросы требуют ответа в виде ещё кучи вопросов, либо сразу готового решения.
ввиде кода
Записан
crossly
Гость
« Ответ #4 : Декабрь 06, 2010, 14:57 »

вы что ждете что вам готовый код выложат?? ... форум предназначен для помощи в решении проблемы... если вы не хотите пробовать то и помощи не ждите..
Записан
shirushizo
Гость
« Ответ #5 : Декабрь 06, 2010, 18:34 »

Берешь номер строки и номер столбца, находишь их сумму, находишь отсаток от деления на 2... Если равен 0 - это один цвет, если - другой!
Необходимые знания:
a)Консоль: библиотека ввода/вывода (stdio или iostream), а точнее чтение и вывод на консоль (printf/cout и scanf/cin)
b)GUI: QWidget, QLineEdit, QLabel, QPushButton, QObject::connect
с)В обоих случаях: оператор if, оператор %, оператор ==, оператор +.

Если вместо номера строки соответствующая буква, возможны варианты... например, разные...

Записан
brankovic
Гость
« Ответ #6 : Декабрь 23, 2010, 00:59 »

Код:
#include <iostream>

int main ()
{
   int s = 0;
   for (int i = 0; i < 4; ++i)
      s ^= std::cin.get ();
   std::cout << s % 2 << "\n";
}

выведет 0 если клетки одного цвета, 1 если разных
Записан
brankovic
Гость
« Ответ #7 : Декабрь 23, 2010, 01:15 »

Код:
#include <iostream>
#include <iterator>
#include <numeric>

int main ()
{
   return std::accumulate (std::istream_iterator <char> (std::cin), std::istream_iterator<char> (), 0) & 1;
}

одной строкой
Записан
brankovic
Гость
« Ответ #8 : Декабрь 23, 2010, 01:21 »

Код:
#include <cstdio>

int main ()
{
   puts ((getchar () ^ getchar () ^ getchar () ^ getchar ()) & 1 ? "different" : "same");
}

язык C, как всегда, лаконичен и прекрасен..
Записан
Fat-Zer
Гость
« Ответ #9 : Декабрь 23, 2010, 02:00 »

Код:
#include <iostream>
#include <iterator>
#include <numeric>

int main ()
{
   return std::accumulate (std::istream_iterator <char> (std::cin), std::istream_iterator<char> (), 0) & 1;
}

одной строкой
А можете пояснить, как оно работает, а то видимо я iostream не так хорошо знаю...
Записан
brankovic
Гость
« Ответ #10 : Декабрь 23, 2010, 02:26 »

А можете пояснить, как оно работает, а то видимо я iostream не так хорошо знаю...

я поленился, имелось ввиду:

std::cout << (
   (std::accumulate (...) & 1)
   ? "different"
   : "same"
);

А работает просто, accumulate суммирует, istream_iterator<T> (stream) читает T из stream, istream_iterator <T> () проверяет поток на конец файла. &1 проверяет на чётность. Единственно, она не проверяет, сколько символов введено. Для "e2e4" она выдаст верное "same", а для "qwe" тоже что-то выдаст..

Да, это при условии, что я правильно понял задачу: определить одного ли цвета две введённые клетки.
« Последнее редактирование: Декабрь 23, 2010, 02:34 от brankovic » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.143 секунд. Запросов: 21.