Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
1 / 1 / 1
Регистрация: 13.09.2009
Сообщений: 96

Шахматы: угрожает ли конь, стоящий на поле (k,l) шахматной доски, полю (m,n)?

16.02.2010, 01:34. Показов 4627. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста разобраться с задачкой..

Даны натуральные числа k,l,m,n. Необходимо выяснить, угрожает ли конь, стоящий на поле (k,l) шахматной доски, полю (m,n) ?

Добавлено через 43 минуты
с этой разобрался...

можете такую пояснить?

Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2010, 01:34
Ответы с готовыми решениями:

Угрожает ли конь, стоящий на поле (k, l), полю (m, n)
Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе — номер горизонтали. Даны...

Шахматная доска. Выяснить, угрожает ли конь, стоящий на поле (k, l), полю(m, n)
Поле шахматной доски определяется парой натуральных чисел,первое из которых задает номер вертикали, а второй- номе горизонтали. Даны...

Шахматная доска: угрожает ли ферзь, стоящий на поле (k, l), полю (m, n)?
Собственно,условие вот. Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе —...

13
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2010, 02:17
все ch такие, что ch < n, n є N
к примеру n = 100000, ch = 12345 - строго возрастающее или ch = 54321 - убывающее
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.02.2010, 03:11
Цитата Сообщение от inferno mf Посмотреть сообщение
можете такую пояснить?
Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.
Сам недавно решал такую задачу. Строго возрастающая - все цифры в числе должны образовывать неубывающую последовательность (например, 1245). Вот собственно код:
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
#include <iostream>
using namespace std;
 
bool seq(int n)
{
    if(n<10)
        return true;
    unsigned long val=n%10;
    n=n/10;
    while(n)
    {
        unsigned long temp=n%10;
        if(temp>=val)
            return false;
        val=temp;
        n=n/10;
    }
    return true;
}
        
int main()
{
    setlocale(LC_ALL, "Russian");
 
    unsigned long n;
 
    do
    {
        cout << "Введите натуральное число N" << endl;
        cin >> n;
    }
    while(n<1);
    cout << endl;
    do
    {
        if(seq(n))
            cout << n << endl;
    }
    while(--n);
 
    system("pause");
    return 0;
}
Для строго убывающей последовательности поменяй условие в строке 13.

Добавлено через 42 минуты
То же самое, с использованием строк:
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
#include <iostream>
using namespace std;
 
int slen(const char* str)
{
    int n=0;
    while(*str++)
        n++;
    return n;
}
 
bool seq(char s[11])
{
    if(slen(s)==1)
        return true;
    while(*++s)
        if((int)*(s-1)>=(int)*s)
            return false;
    return true;
}
        
int main()
{
    setlocale(LC_ALL, "Russian");
 
    unsigned long n;
    char str[11];
 
    do
    {
        cout << "Введите натуральное число N" << endl;
        cin >> n;
    }
    while(n<1);
    cout << endl;
    do
    {
        itoa(n, str, 10); 
        if(seq(str))
            cout << str << endl;
    }
    while(--n);
 
    system("pause");
    return 0;
}
0
1 / 1 / 1
Регистрация: 13.09.2009
Сообщений: 96
01.03.2010, 22:11  [ТС]
это на C++ ? что-то не очень понимаю как это можно записать на С...
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.03.2010, 22:31
inferno mf, в данном коде нету специфических контейнеров из C++, поэтому можете просто заменить ввод/вывод и все
0
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
02.03.2010, 15:05
inferno mf, нашел довольно изящное решение задачи про коня, не удержался от соблазна его показать
C
1
2
3
4
5
6
7
8
9
10
11
12
 for(s=0; s<8; s++) {
    if (s&1) x = 1;
    else     x = 2;
    y = 3 - x;
    if (s&2) x = -x;
    if (s&4) y = -y;
    if (k+x==mm && l+y==n) {
        printf("Am!\n");
        break;
    }
}
if (s==8) printf("Fig\n");
s - битовая шкала
1 бит - шаг по x (1 or 2)
2-3 биты - управление знаками
0
1 / 1 / 1
Регистрация: 13.09.2009
Сообщений: 96
02.03.2010, 17:30  [ТС]
Цитата Сообщение от Day Посмотреть сообщение
inferno mf, нашел довольно изящное решение задачи про коня, не удержался от соблазна его показать
Code
1
2
3
4
5
6
7
8
9
10
11
12
 for(s=0; s<8; s++) {
    if (s&1) x = 1;
    else     x = 2;
    y = 3 - x;
    if (s&2) x = -x;
    if (s&4) y = -y;
    if (k+x==mm && l+y==n) {
        printf("Am!\n");
        break;
    }
}
if (s==8) printf("Fig\n");
s - битовая шкала
1 бит - шаг по x (1 or 2)
2-3 биты - управление знаками
Спасибо. Можете подсказать по тому коду, редактировал, но есть ошибки...
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
02.03.2010, 20:58
нашел довольно изящное решение задачи про коня
Это изящное решение ?

Изящное - это вот такое:
int dx= abs(k-m), dy= abs(l-n);
printf( "%s\n", ((dx==1 && dy==2) || (dx==2 && dy==1)) ? "YES" : "NO" );
2
1 / 1 / 1
Регистрация: 13.09.2009
Сообщений: 96
05.03.2010, 00:35  [ТС]
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
#include <iostream>
using namespace std;
 
bool seq(int n)
{
        if(n<10)
                return true;
        unsigned long val=n%10;
        n=n/10;
        while(n)
        {
                unsigned long temp=n%10;
                if(temp>=val)
                        return false;
                val=temp;
                n=n/10;
        }
        return true;
}
                
int main()
{
        setlocale(LC_ALL, "Russian");
 
        unsigned long n;
 
        do
        {
                cout << "Введите натуральное число N" << endl;
                cin >> n;
        }
        while(n<1);
        cout << endl;
        do
        {
                if(seq(n))
                        cout << n << endl;
        }
        while(--n);
 
        system("pause");
        return 0;
}
под С этот код не работает((

есть непонятные конструкции(
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
05.03.2010, 01:20
#include <stdio.h>
убери using namespace
замени cin>>; на scanf(); и cout<<; на printf();
endl это \n
и для system вроде stdlib.h подключить нужно
0
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
10.03.2010, 10:48
А можно еще так:
Code
1
2
int dx= abs(k-m), dy= abs(l-n);
printf( "%s\n", ((dx + dy)==3 && (dx*dy)!=0) ? "YES" : "NO" );
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
10.03.2010, 12:37
Код не наглядный получается и не очевидный.
А вообще сначала я думал так написать:
int dx= abs(k-m), dy= abs(l-n);
printf( "%s\n", (dx*dy==2) ? "YES" : "NO" );
Добавлено через 1 минуту
Два последних случая нехороши тем, что при больших dx и dy величина dx*dy может превысить int.
1
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
10.03.2010, 17:32
Цитата Сообщение от odip Посмотреть сообщение
Код не наглядный получается и не очевидный.
А вообще сначала я думал так написать:


Добавлено через 1 минуту
Два последних случая нехороши тем, что при больших dx и dy величина dx*dy может превысить int.
Здорово!
А по поводу превышения int, так она еще раньше может превыситься в вычитаниях, и если есть такое подозрение, надо сразу переходить на длинную арифметику, но и это в общем случае не спасает, т.к. компутер (и даже объединенные все компы мира) - устройство хоть и чрезвычайно мощное и емкое, но увы! конечное, чего никак нельзя сказать об этой простейшей математической абстракции - натуральном ряде
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
10.03.2010, 18:25
так она еще раньше может превыситься в вычитаниях
Неправда.
dx=100000, dy=100000
Вычесть еще можем, а вот перемножить уже не можем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2010, 18:25
Помогаю со студенческими работами здесь

Проверить не угрожает ли данный шахматный конь заданному полю
Поле шахматной доски имеет размер 8 x 8. Клетки обозначены координатами, первая - номер по вертикале (слева на право),вторая - номер по...

Верно ли высказывание, что слон, расположенный на поле (x1, y1) шахматной доски, «бьет» поле (x2, y2)
Верно ли высказывание, что слон, расположенный на поле (x, y) шахматной доски, «бьет» поле (x1, y1) (x1, y1, x, y – целые от1 до 8); ...

Выяснить, угрожает ли ферзь полю (k, l), если он расположен на поле (m, n)
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали (при...

На поле (к, р) шахматной доски расположена ладья. Угрожает ли она полю (м, н)
На поле (к, р) шахматной доски расположена ладья. Угрожает ли она полю (м, н)? нужно написать программу решения.. помогите пожалуйста.. и...

На поле (k,l) шахматной доски расположен ферзь; проверить, угрожает ли он полю (m,n)
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми:первое число-номер вертикали(при счете...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru