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

Найти кратчайший путь шахматного короля - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Практическое применение c++ http://www.cyberforum.ru/cpp-beginners/thread1826831.html
Решил изучить с++, но столкнулся со следующей проблемой: как программы на этом языке применяются на практике? При изучении с# находил множество уроков по созданию различного рода приложений (текстовые редакторы, музыкальные плееры, игры...), по с++- ничего. Есть ли подобные обучающие материалы и по с++?
C++ Разработать алгоритм блок-схемы, чтобы обчислить численного интегрирования с использованием метода прям Обратный отсчет от введенного числа к 0 2sin (x - 5) http://www.cyberforum.ru/cpp-beginners/thread1826814.html
Поиск одинаковых элементов в массивах! C++
Даны 2 массива(x,y) cоставить новый массив (z), из тех элементов массива (x) которые не входят в массиве (у). Я вот что написал но неправильно получилось исправьте мою прогу плиз. #include <iostream> using namespace std; void main() { int i,j,k=0; const int n=6;
Доступ к пользовательскому класу по void указателю C++
Здравствуйте, есть указатель void* pointer = 0; //указатель на объект Известно, на какой именно тип объекта ссылается указатель. Пусть в данном случае это пользовательский тип, то есть есть это объект класса Button. Мне необходимо чтобы некоторая функция возвращала указатель как указатель на Button Как я только не пытался....
C++ Определить минимально возможное количество игроков в команде КВН http://www.cyberforum.ru/cpp-beginners/thread1826771.html
Определить минимально возможное количество игроков в команде КВН, если известно, что девушек в команде больше X%, но меньше Y%. Входные данные: Во входном потоке в первой строке через пробел заданы числа X, Y ( X, Y < 100 ). Пример входного файла (input.txt): 40 50
C++ Builder Определить количество чисел массива, которые больше своих соседей Дано 20 целых чисел. Определить, сколько из них больше своих «соседей», предыдущего и последующего. Данный код сразу ответ выводит. и то неправильный. не могу найти ошибку. С++ //--------------------------------------------------------------------------- #include <vcl.h> #include <iostream.h> #include <math.h> #pragma hdrstop подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
15.10.2016, 20:27     Найти кратчайший путь шахматного короля
C++
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//Есть шахматное поле NxM
//N, M ≤ 10^9
//На шахматном поле отмечено два прямоугольника размерами не менее 1х1.
//Нужно найти кратчайший путь короля из первого прямоугольника во второй.
//Можно ходить в любую сторону.
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <complex>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
typedef int                             T_coord;
typedef std::complex    < T_coord   >   T_cell;
///////////////////////////////////////////////////////////////////////////////
struct  T_rect
{
    //-------------------------------------------------------------------------
    char    name_symb_;
    T_cell  lower_left_;
    T_cell  top_right_;
    //-------------------------------------------------------------------------
    T_rect( char    name_symb )
        :
        name_symb_  ( name_symb )
    {}
    //-------------------------------------------------------------------------
    void    input()
    {
        std::cout   <<  "\nEnter cells of rectangle "
                    <<  name_symb_
                    <<  " in form (1,2)"
                    <<  std::endl;
 
        std::cout   <<  "\tlower left\t: ";
        std::cin    >>  lower_left_;
 
        std::cout   <<  "\ttop right_\t: ";
        std::cin    >>  top_right_;
    }
    //-------------------------------------------------------------------------
    int     king_dist_to( T_rect    const   &   r )
    {
        bool    this_left   =       lower_left_     .real()
                                <=  r.lower_left_   .real();
 
        bool    this_lower  =       lower_left_     .imag()
                                <=  r.lower_left_   .imag();
 
        auto    rect_left   =   *this;
        auto    rect_right  =   r;
 
        auto    rect_lower  =   *this;
        auto    rect_top    =   r;
 
        if( !this_left  )   { std::swap     ( rect_left,    rect_right  );  }
        if( !this_lower )   { std::swap     ( rect_lower,   rect_top    );  }
 
        auto    dist_horiz  =       rect_right  .lower_left_    .real()
                                -   rect_left   .top_right_     .real();
 
        auto    dist_vert   =       rect_top    .lower_left_    .imag()
                                -   rect_lower  .top_right_     .imag();
 
        dist_horiz          =   std::max( dist_horiz,   0 );
        dist_vert           =   std::max( dist_vert,    0 );
 
        return  std::max    (
                                dist_horiz,
                                dist_vert
                            );
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_rect  A('A');
    T_rect  B('B');
 
    A.input();
    B.input();
 
    std::cout   <<  A.king_dist_to(B)
                <<  std::endl;
}
 
Текущее время: 02:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru