Форум программистов, компьютерный форум CyberForum.ru

Упрощение логического выражения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Тип string и subscript out of range http://www.cyberforum.ru/cpp-beginners/thread926476.html
Доброго времени дня. Такая проблема. Обращаюсь к отдельному элементу массива: #include <iostream> #include <string> #include <conio.h> using namespace std;
C++ Если кого не затруднит, посмотрите где у меня ошибка Вот задание: Даны две последовательности a1, a2, …an и b1, b2, …bm. (n>m). В каждой из них члены различны. Верно, ли что все члены второй последовательности входят в первую последовательность? У меня всё время пишет, что входит, хотя и разные числа в обоих массивах забиваю. Вот код, если кого не затруднит, подскажите, где я что пропустил #include<iostream.h> #include<windows.h>... http://www.cyberforum.ru/cpp-beginners/thread926474.html
C++ char[]
#include <iostream> using namespace std; #define N 4 #define S 2 int main() { int rate; int s=0;
error lnk? C++
При компиляции вылазит такая штука: 1>ConsoleApplication.obj : error LNK2028: ёё√ыър эр эхЁрчЁх°хээє■ ыхъёхьє (0A0005DE) "public: __thiscall Student_Info::Student_Info(void)" (??0Student_Info@@$$FQAE@XZ) т ЇєэъЎшш "int __cdecl main(void)" (?main@@$$HYAHXZ) 1>ConsoleApplication.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы "public: __thiscall Student_Info::Student_Info(void)"...
C++ GUI http://www.cyberforum.ru/cpp-beginners/thread926445.html
Всем привет. Хотелось бы посоветоваться по поводу GUI. Выбираю библиотеку для разработки GUI. Вот какие кандидаты у меня есть: mfc, wtl/atl, qt. 1. Хотелось бы узнать что предпочтительнее использовать. 2. Есть ли какой нибудь смысл изучать mfc?
C++ Список написал функцию, которая удаляет звено списка, если выполняется условие( если параметр функции == полю звена), однако вылетает ошибка list iterator not incrementable, когда удаляется последнее звено void CarPark::GoOutCarPark(int number) { for (auto it = machine.begin(); it != machine.end(); it++) { if (number == it->GetNumber()) it = machine.erase(it); } } machine(список) подробнее

Показать сообщение отдельно
Limpaku12
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 4
21.07.2013, 13:45     Упрощение логического выражения
Всем привет. Сейчас решаю задачу про шахматного коня по книжке Дейтелов. Там предлагается высчитать доступность каждой клетки и двигать коня туда, где доступность наименьшая. Чтобы ее рассчитать, надо, грубо говоря, из каждой клетки походить конём. Идея, как считать доступность уже есть, выглядит она примерно так (тут как минимум нет проверки границы массива):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//board - двумерный массив, изображающий доску
//x и y - координаты текущей точки, counter - счетчик, показывающий ту самую доступность для этой клетки
//значение -1 означает, что конь уже прошел по клетке
//инициилизировал то, что важно для понимания моей логики, конкретное значение остальных переменных/массивов не важно
 
int shift = {-1, 1, -2, 2};
counter = 0;
 
for (int i = 0; i < 2; i++)
   for (int j = 2; j < 4; j++) {
      if (board [ x + shift [i] ] [ y + shift [j] ] != -1) counter++;
      if (board [ x + shift [j] ] [y + shift [i] ]  != -1) counter ++; 
   }
 
board [x] [y] = counter;
Но при этом мне нужно сделать эту самую проверку границы массива. Ничего изящнее этого придумать не смог:

C++
1
2
3
4
5
6
7
8
const int boardSize = 8;
 
if ( (x + shift [i] >= 0) && (x + shift [i] < boardSize) && 
     (x + shift [j] >= 0) && (x + shift [j] < boardSize) && 
     (y + shift [i] >= 0) && (y + shift [i] < boardSize) && 
     (y + shift [j] >= 0) && (y + shift [j] < boardSize) ) {
   //код, если это безумие прошло проверку
}
Это просто ужасно выглядит, хотя и, по идее, должно сработать. Нет ли способа как-то упростить эту проверку? Чтобы выглядело понятнее и компактнее хотя бы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru