Задачка

Тема в разделе "C/C++/C#", создана пользователем Firiat, 28 окт 2010.

  1. Firiat

    Firiat Well-Known Member

    Регистрация:
    19 окт 2010
    Сообщения:
    48
    Симпатии:
    0
    Привет Всем !!!!

    Определить,угрожает ли ферзь, расположенный на поле ( n1,m1 ) шахматной доски ,фигуре, расположенной на поле ( n2,m2 ). ( где n1,m1,n2,m2 - натуральные числа от 1 до 8 ).
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Таки в чем проблема? В алгоритме? Матрица целых чисел 8х8. начальное состояние - все нули. по координатам ферзя и фигуры - единицы. потом просуммировать вертикаль, где стоит ферзь. если сумма = 2, угрожает. в противном случае суммируем горизонталь. потом диагонали (по необходимости). если дошли до конца программы, значит не угрожает.
     
  3. Firiat

    Firiat Well-Known Member

    Регистрация:
    19 окт 2010
    Сообщения:
    48
    Симпатии:
    0
    а код можно ?? гг))))
     
  4. Firiat

    Firiat Well-Known Member

    Регистрация:
    19 окт 2010
    Сообщения:
    48
    Симпатии:
    0
    ясно....но я разберу её )))..спс
     
  5. domny

    domny Гость

    Если что, вот мои координаты. Решу. Недорого
    648964446
    sc2.domny@inbox.ru
     
  6. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Вот самый тривиальный алгоритм, без излишиств (массивов и прочего).. :)) Смешной конечно, но логичный :)
    Правда пытается вычислять что будет если ферзь вылезит за поле :))) Зато одним циклом :))

    Код (C++):
    #include <iostream>
    #include <Windows.h>

    using namespace std;
    void main(void)
    {
    setlocale(LC_ALL,"Russian");
    int px,py; //Фигура
    int fx,fy; //Ферзь
    cout<<"Введите координаты ферзя X,Y :";
    scanf("%i,%i",&fx,&fy);

    cout<<"Введите координаты фигуры X,Y :";
    scanf("%i,%i",&px,&py);
    cout<<endl;

    bool Res = false;
    for (int i = 1; i<8; i++)
    {
    //Диагональ
    if ( fx-i == px && fy-i == py) { Res = true; break; }
    if ( fx+i == px && fy+i == py) { Res = true; break; }
    //Перпендикуляры к осям
    if (fx-i == px && fy == py) { Res = true; break; }
    if (fx+i == px && fy == py) { Res = true; break; }

    if (fx == px && fy+i == py) { Res = true; break; }
    if (fx == px && fy-i == py) { Res = true; break; }
    }

    if (Res)
    {
    cout<<"Усе, нет больше фигуры"<<endl;
    } else cout<<"Все живы и счастливы :-)"<<endl;
    }
     
  7. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Еще ифами мона описать :)))) Но тогда это более мат. подход, зато самый короткий алгоритм

    #include <iostream>

    Код (C++):
    using namespace std;
    void main(void)
    {
    setlocale(LC_ALL,"Russian");
    int px,py; //Фигура
    int fx,fy; //Ферзь
    cout<<"Введите координаты ферзя X,Y :";
    scanf("%i,%i",&fx,&fy);

    cout<<"Введите координаты фигуры X,Y :";
    scanf("%i,%i",&px,&py);
    cout<<endl;

    bool Res = false;
    //Это условие для перпендикуляров к осям
    if (fx == px || fy == py) Res = true;
    //Это условие при диагоналях
    if (px-py == fx-fy || px+py == fx+fy) Res = true;

    if (Res)
    {
    cout<<"Усе, нет больше фигуры"<<endl;
    } else cout<<"Все живы и счастливы :-)"<<endl;
    }
     
Загрузка...
Похожие Темы - Задачка
  1. Hehabr
    Ответов:
    1
    Просмотров:
    486
  2. dmalsh
    Ответов:
    1
    Просмотров:
    1.009
  3. varenbko
    Ответов:
    0
    Просмотров:
    1.040
  4. Fillya
    Ответов:
    0
    Просмотров:
    1.093
  5. ferrum
    Ответов:
    1
    Просмотров:
    1.119

Поделиться этой страницей