![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
DD |
![]()
Сообщение
#1
|
Гость ![]() |
Программа:
type поле=record верт:(a,b,c,d,e,f,g,h); гориз: 1..8 end; Описать логическую функцию ходферзя (n1,n2), проверяющая, может ли ферзь за один ход перейти с поля n1 шахматной доски на поле n2 код: Код Program laba4; type pole=record vert:(a,b,c,d,e,f,g,h); gor: 1..8; end; var n1,n2 :pole; function hodferzya(n1,n2:pole) : boolean; begin if ((n1.vert)=(n2.vert)) and (n1.gor=n2.gor) then hodferzya:=true else hodferzya:=false; end; begin readln(n1,n2); case n1 of hodferzya(n1,n2); end. что не то? поправьте.. как всё же правильно описать условие проверки хода ферзя? |
Дож |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Репутация: ![]() ![]() ![]() |
ЧТО ЭТО? ![]()
Вот что наверно предполагалось: Код Program laba4; type pole=record vert: 1..8; gor: 1..8; end; var n1,n2 :pole; function hodferzya(n1,n2:pole) : boolean; begin if ((n1.vert)=(n2.vert)) and (n1.gor=n2.gor) then hodferzya:=true else hodferzya:=false; end; begin Writeln('Enter vert of Ferz position'); readln(n1.vert); Writeln('Enter gor of Ferz position'); readln(n1.gor); Writeln('Enter vert of ferz step'); readln(n2.vert); Writeln('Enter gor of Ferz step'); readln(n1.gor); If hodferzya(n1,n2) then writeln('Yes!') else writeln('No!!'); readln; end. Сообщение отредактировано: Дож - 21.05.2005 21:29 -------------------- Доброго времени суток.
:nnn: |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Ребята, я конечно очень извиняюсь, но этой функции:
function hodferzya(n1,n2:pole) : boolean; недостаточно, ибо ферзь ходит не только по горизонтали и вертикали, а еще и по диагонали... Кстати, почему And между условиями? Так что придется делать что-то типа: function hodferzya(n1,n2:pole) : boolean; |
Дож |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ах да!
Цитата как всё же правильно описать условие проверки хода ферзя? А я думал он просит разобраться с компиляцией проги. ![]() -------------------- Доброго времени суток.
:nnn: |
DD |
![]()
Сообщение
#5
|
Гость ![]() |
Ну вот, вроде что-то сделал.. даже работает.. Кстати, суммировать правильно, но надо было ещё и вычитание делать.. так как ферзь может и по другой диагонали ходить...
Единственный вопрос остался, а вот горизонталь никак в (a,b,c,d,e,f,g,h) переделать нельзя? Код Program laba4; Uses Crt; type pole=record vert: 1..8; gor: 1..8; end; var n1,n2 :pole; function hodferzya(n1,n2:pole) : boolean; begin If (n1.vert=n2.vert) or (n1.gor=n2.gor) or (abs(n1.vert-n1.gor)=abs(n2.vert-n2.gor)) or (abs(n1.vert+n1.gor)=abs(n2.vert+n2.gor)) then hodferzya:=true else hodferzya:=false; If (n1.vert=n2.vert) and (n1.gor=n2.gor) then hodferzya:=false end; begin clrscr; Writeln ('Расположение Ферзя'); Writeln('Введите вертикальную координату (a,b,c,d,e,f,g,h)'); readln(n1.vert); Writeln('Введите горизонтальную координату (1..8)'); readln(n1.gor); writeln; Writeln ('Куда переместить Ферзя?'); Writeln('Введите вертикальную координату (a,b,c,d,e,f,g,h)'); readln(n2.vert); Writeln('Введите горизонтальную координату (1..8)'); readln(n2.gor); writeln; If hodferzya(n1,n2) then writeln('Возможный ход!') else writeln('Не возможный ход!'); readln; end. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата(DD @ 22.05.05 19:27) Единственный вопрос остался, а вот горизонталь никак в (a,b,c,d,e,f,g,h) переделать нельзя? Что ты имеешь в виду? Наверное, все-таки вертикаль? Чтобы вводить координаты в виде "a 3" вместо "1 3" как сейчас? Можно. Просто при вводе делай так: var Ch: char; Ну, и для второй записи соответственно... Если же ты хочешь именно изменить структуру на type то это будет чуть сложнее... Кстати, (abs(n1.vert+n1.gor)=abs(n2.vert+n2.gor))не имеет смысла, сумма по определению не может быть отрицательной (если вводить корректные значения), так что оба Abs из суммы можешь убрать... |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 5:04 |