Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 11

Шахматная доска

12.03.2017, 19:16. Показов 5002. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пусть на шахматной доске заданы два поля: p1 и p2. Определите, какая из шахматных фигур при установке на поле p1 бьет фигуру, стоящую на поле p2. Координаты на шахматной доске определяются по горизонтали от a до h и по вертикали от 1 до 8. Белые фигуры двигаются от 8-й горизонтали к первой, а черные – от 1 к 8-й.

Прошу помощи, не как не могу дописать прогу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2017, 19:16
Ответы с готовыми решениями:

шахматная доска
На первую клетку шахматной доски положили одну монету. На каждую следующую на 3 монеты больше. Сколько всего монет на доске?

Шахматная доска
Поле шахматной доски определяется парой натуральных целых чисел, каждое из которых не превосходит восьми: Первое число номер вертикали...

Шахматная доска PascalABC
Нарисуйте пожалуйста шахматную доску в Паскале, 8х8, квадраты чередуются ну как в обычной шахм.доске черный-белый

15
 Аватар для Alexandr212
101 / 98 / 112
Регистрация: 28.11.2016
Сообщений: 528
12.03.2017, 19:19
Цитата Сообщение от Viront86 Посмотреть сообщение
дописать прогу
Если дописать, то что вы сами уже написали не покажите?
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 11
12.03.2017, 19:22  [ТС]
Pascal
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
uses crt;
var v1,v2:char;
    g1,g2:integer;
begin
clrscr;
writeln('Введите координаты ');
repeat
write('Номер вертикали буква от а до h v=');
readln(v1);
until v1 in ['a'..'h'];
repeat
write('Номер горизонтали от 1 до 8 g=');
readln(g1);
until g1 in [1..8];
repeat
writeln('Введите координаты фигуры, не совпадающие с координатами ');
repeat
write('Номер вертикали буква от а до h v=');
readln(v2);
until v2 in ['a'..'h'];
repeat
write('Номер горизонтали от 1 до 8 g=');
readln(g2);
until g2 in [1..8];
until(v1<>v2)or(g1<>g2);
if(v1=v2)or(g1=g2)or(abs(g2-g1)=abs(ord(v1)-ord(v2)))
then write('Бьет')else write('Не бьет');
readln
end.




\\программа только для ферзя
нужно еще фигуры
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
12.03.2017, 19:30
Цитата Сообщение от Viront86 Посмотреть сообщение
Координаты на шахматной доске определяются по горизонтали от a до h и по вертикали от 1 до 8. Белые фигуры двигаются от 8-й горизонтали к первой, а черные – от 1 к 8-й.
Это в какой стране такие шахматные доски и правила? Кстати в том коде, который Вы содрали, совсем не так.
1
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 11
12.03.2017, 19:35  [ТС]
Обычная вроде шахматная доска. В чем проблема? Да я содрал код, но это было сделано для базиса.
0
 Аватар для Alexandr212
101 / 98 / 112
Регистрация: 28.11.2016
Сообщений: 528
12.03.2017, 19:39
Pascal
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
uses
  crt;
 
var
  v1, v2: char;
  g1, g2: integer;
 
begin
  clrscr;
  writeln('Введите координаты ');
  repeat
    write('Номер вертикали буква от а до h v=');
    readln(v1);
  until v1 in ['a'..'h'];
  repeat
    write('Номер горизонтали от 1 до 8 g=');
    readln(g1);
  until g1 in [1..8];
  writeln('Введите координаты фигуры, не совпадающие с координатами ');
  repeat
    write('Номер вертикали буква от а до h v=');
    readln(v2);
  until v2 in ['a'..'h'];
  repeat
    write('Номер горизонтали от 1 до 8 g=');
    readln(g2);
  until g2 in [1..8];
  if abs(ord(v1) - ord(v2)) = abs(g1 - g2)
    then writeln('Слон или королева')
  else if (g1 = g2) or (ord(v1) = ord(v2))
    then writeln('ладья, королева')
  else if ((abs(g1 - g2) = 2) and (abs(ord(v1) - ord(v2)) = 1)) or ((abs(g1 - g2) = 1) and (abs(ord(v1) - ord(v2)) = 2))
    then writeln('конь');
  readln;
end.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
12.03.2017, 19:39
На обычной доске вертикали обозначаются справа налево буквами от a до h, горизонтали снизу вверх цифрами от 1 до 8, поэтому поля пишут как b4, h8..
Белые фигуры движутся к восьмой горизонтали, а черные к первой.
0
 Аватар для Alexandr212
101 / 98 / 112
Регистрация: 28.11.2016
Сообщений: 528
12.03.2017, 19:41
Это без короля и пешки.

Добавлено через 1 минуту
Puporev, В коде есть ошибки? Не уверен, что всё на 100% рассмотрел.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
12.03.2017, 19:44
Да вроде для этих фигур все верно.

Добавлено через 1 минуту
Для коня можно упростить.
Pascal
1
if (abs(g1 - g2)*abs(ord(v1) - ord(v2))=2
0
 Аватар для Alexandr212
101 / 98 / 112
Регистрация: 28.11.2016
Сообщений: 528
12.03.2017, 19:53
Вот с королём и пешкой и упрошением для коня, с королём очень уж громоздко получлось))
Pascal
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
uses
  crt;
 
var
  v1, v2: char;
  g1, g2: integer;
 
begin
  clrscr;
  writeln('Введите координаты ');
  repeat
    write('Номер вертикали буква от а до h v=');
    readln(v1);
  until v1 in ['a'..'h'];
  repeat
    write('Номер горизонтали от 1 до 8 g=');
    readln(g1);
  until g1 in [1..8];
  writeln('Введите координаты фигуры, не совпадающие с координатами ');
  repeat
    write('Номер вертикали буква от а до h v=');
    readln(v2);
  until v2 in ['a'..'h'];
  repeat
    write('Номер горизонтали от 1 до 8 g=');
    readln(g2);
  until g2 in [1..8];
  if abs(ord(v1) - ord(v2)) = abs(g1 - g2)
    then writeln('Слон или королева')
  else if (g1 = g2) or (ord(v1) = ord(v2))
    then writeln('ладья, королева')
  else if (abs(g1 - g2)*abs(ord(v1) - ord(v2))=2
    then writeln('конь');
  if ((abs(ord(v1) - ord(v2)) = abs(g1 - g2)) and (abs(g1 - g2) = 1)) or ((g1 = g2) or ((ord(v1) = ord(v2))) and (((abs(g1 - g2)) = 1) or ((abs((ord(v1) - ord(v2)) = 1)))))
    then writeln('Король');
  if (ord(v1) - ord(v2) = g1 - g2) and (g1 - g2 = 1)
    then writeln('пешка');
  readln;
end.
1
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 11
12.03.2017, 20:25  [ТС]
Благодарю за помощь.!
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 11
14.03.2017, 08:54  [ТС]
ругается pascal abc на строчку с королём

"Нет перегруженной подпрограммы с такими типами параметров"
не могу понять в чем проблема.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.03.2017, 09:19
Это непобедимая проблема простого АВС, не понимает все особенности ord(); Нужно писать в АВС.net или как-то изгаляться.
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 11
15.03.2017, 14:07  [ТС]
Помогли мне сделать программу, но не могу решить проблему. Ошибка в строке где король.

Pascal
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
program v620;
uses
  crt;
var
  v1, v2: char;
  g1, g2: integer;
 
    begin
    clrscr;
      writeln('Введите координаты ');
      repeat
      write('Введите букву от а до h v=');
      readln(v1);
      until v1 in ['a'..'h'];
        repeat
        write('Введите номер от 1 до 8 g=');
        readln(g1);
        until g1 in [1..8];
        writeln('Введите координаты фигуры, не совпадающие с координатами ');
          repeat
          write('Введите букву от а до h v=');
          readln(v2);
          until v2 in ['a'..'h'];
            repeat
            write('Введите номер от 1 до 8 g=');
            readln(g2);
            until g2 in [1..8];
              if abs(ord(v1) - ord(v2)) = abs(g1 - g2)
                then writeln('Слон или королева')
                  else if (g1 = g2) or (ord(v1) = ord(v2))
                 
                then writeln('ладья, королева')
                  else if ((abs(g1 - g2) = 2) and (abs(ord(v1) - ord(v2)) = 1)) or ((abs(g1 - g2) = 1) and (abs(ord(v1) - ord(v2)) = 2))
                then writeln('конь');
                  if  ((abs(ord(v1) - ord(v2)) = abs(g1 - g2)) 
                  and (abs(g1 - g2) = 1)) or ((g1 = g2) or ((ord(v1) = ord(v2)))
                  and (((abs((g1) - (g2))) = 1) or ((abs((ord(v1) - ord(v2)) = 1)))))
                then writeln('Король');
                  if (ord(v1) - ord(v2) = g1 - g2) and (g1 - g2 = 1)
                then writeln('пешка');
                    
                    
          writeln;
          Writeln('Нажмите Enter для вывода примечания');
          readln;
          begin
          delay(100);
          textcolor(Lightred);
          Writeln('Примечание - Если программа не показала результат, то срубить фигуру не возможно!');
          end;
end.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
15.03.2017, 14:16
Pascal
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
program v620;
 
uses
  crt;
var
  v1, v2: char;
  g1, g2: integer;
 
begin
  clrscr;
  writeln('Введите координаты ');
  repeat
    write('Введите букву от а до h v=');
    readln(v1);
  until v1 in ['a'..'h'];
  repeat
    write('Введите номер от 1 до 8 g=');
    readln(g1);
  until g1 in [1..8];
  writeln('Введите координаты фигуры, не совпадающие с координатами ');
  repeat
    write('Введите букву от а до h v=');
    readln(v2);
  until v2 in ['a'..'h'];
  repeat
    write('Введите номер от 1 до 8 g=');
    readln(g2);
  until g2 in [1..8];
  if abs(ord(v1) - ord(v2)) = abs(g1 - g2) then 
    writeln('Слон или ферзь')
  else 
  if (g1 = g2) or (ord(v1) = ord(v2)) then 
    writeln('ладья, ферзь')
  else 
  if ((abs(g1 - g2) = 2) and (abs(ord(v1) - ord(v2)) = 1)) or ((abs(g1 - g2) = 1) and (abs(ord(v1) - ord(v2)) = 2)) then 
    writeln('конь');
  if ((abs(ord(v1) - ord(v2)) = abs(g1 - g2)) and (abs(g1 - g2) = 1)) or ((g1 = g2) or ((ord(v1) = ord(v2))) and (((abs((g1) - (g2))) = 1) or ((abs(ord(v1) - ord(v2)) = 1)))) then 
    writeln('Король');  
  if (ord(v1) - ord(v2) = g1 - g2) and (g1 - g2 = 1) then 
    writeln('пешка');
  writeln;
  Writeln('Нажмите Enter для вывода примечания');
  readln;
  begin
    delay(100);
    textcolor(Lightred);
    Writeln('Примечание - Если программа не показала результат, то срубить фигуру не возможно!');
  end;
end.
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 11
15.03.2017, 15:24  [ТС]
благодарю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2017, 15:24
Помогаю со студенческими работами здесь

простенькая шахматная доска
Написать программу создания шахматной доски. Просто поле с черными и белыми квадратами. помогите пожалуйста

Графика. Шахматная доска. Улитка Паскаля
Напишите программу для создания рисунка. Создать рисунок. Напишите программу для создания рисунка. Написать программу создания шахматной...

Шахматная доска без фигур с традиционной нотацией полей.
Шахматная доска без фигур с традиционной нотацией полей. помогите пожалуйста

1-мерный массив с квадратами чисел и матрица A(N*N) - "шахматная доска"
Помогите пожалуйста решить задачи, программирование тяжело дается... 1. Получить 1-мерный массив А, в котором должны быть получены...

Создайте массив "шахматная доска" 8х8, содержащий 0 и 1
создайте массив &quot;шахматная доска&quot; 8х8, содержащий 0 и 1.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru