Помогите!
|
|
TODD | Дата: Четверг, 06.12.2007, 06:37 | Сообщение # 1 |
Новичок
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Дана шахматная доска.Доска для мини-игры стандартная:столбики намеруются большыми латинскимы буквами од'A'до'H' ряды од 1 до 8 номерацыя начинается з нижнего левого угла.Данно король и две пешки и слон (Пешки могут стоять и в последних рядах.Помогите узнать сколько фегурам угражает слон)В стандартный поток записаны 2 символа -буква и номер столбика,на прехрестье каких находится слон,у следующих трьох рядах,по 2 символа у кождому - каардинаты караля и 2 пешек соответствено.Вивести одно целое число колтчесиво фигур,которым угрожает слон,или No если слон не угрожает ни одой фигуре.
|
|
| |
Pavel | Дата: Четверг, 06.12.2007, 09:22 | Сообщение # 2 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Где-то я это уже видел! Сейчас что-нибудь придумаю.
|
|
| |
Pavel | Дата: Четверг, 06.12.2007, 09:32 | Сообщение # 3 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Можно сделать так: 1. Переводишь входные данные в нужный формат. Допустим, если хочешь, чтоб входные данные были типа строки, то посимвольно преобразуешь эти данные в координаты ячейки массива (шахматной доски). 2. Как-нибудь запоминаешь какая фигура стоит в ячейке, допустим числовым кодом (пешка - 1, и т.д.). 3. Потом в цикле (одномерном) двигаешься до конца доски так, как ходит слон, т.е. по диагонали. Не забывай, что двигаться надо во все четыре стороны. Т.е. будет четыре цикла.
|
|
| |
snaper1993 | Дата: Четверг, 06.12.2007, 23:22 | Сообщение # 4 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| А зделать можите(Пожалуста)!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
TODD | Дата: Пятница, 07.12.2007, 02:27 | Сообщение # 5 |
Новичок
Группа: Пользователи
Сообщений: 6
Статус: Offline
| вот я пытался сделать но она не все тесты проходит.Пожалуйста исправте ошибки.Желательно сегодня до 20:00.Буду благодарен var x,x1,x2,x3:char; y,y1,y2,y3:integer; k,k1,k2,k3,rez:integer; begin rez:=0; readln(x,y);readln(x1,y1);readln(x2,y2);readln(x3,y3); case x of 'A':k:=1;'B':k:=2;'C':k:=3;'D':k:=4;'E':k:=5;'F':k:=6;'G':k:=7;'H':k:=8;end; case x1 of 'A':k1:=1;'B':k1:=2;'C':k1:=3;'D':k1:=4;'E':k1:=5;'F':k1:=6;'G':k1:=7;'H':k1:=8;end; case x2 of 'A':k2:=1;'B':k2:=2;'C':k2:=3;'D':k2:=4;'E':k2:=5;'F':k2:=6;'G':k2:=7;'H':k2:=8;end; case x3 of 'A':k3:=1;'B':k3:=2;'C':k3:=3;'D':k3:=4;'E':k3:=5;'F':k3:=6;'G':k3:=7;'H':k3:=8;end; if (abs(k-k1)=(y-y1))then rez:=rez+1; if (abs(k-k2)=(y-y2))then rez:=rez+1; if (abs(k-k3)=(y-y3))then rez:=rez+1; if rez=0 then writeln('NO'); if rez<>0 then writeln(rez); end.
|
|
| |
Seqular | Дата: Пятница, 07.12.2007, 08:03 | Сообщение # 6 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Code Program toTODD; Uses CRT; Type field = record x, y: Byte; end; Const LITERA: String = 'ABCDEFGH';
Var slon, king, pesh1, pesh2: field; Rez: Integer; s: String[2];
Begin ClrScr; Write('Поле, где находится слон: '); Readln(s); slon.x := Pos(s[1],LITERA); Val(s[2],slon.y,Rez);
Write('Поле, где находится король: '); Readln(s); king.x := Pos(s[1],LITERA); Val(s[2],king.y,Rez);
Write('Поле, где находится первая пешка: '); Readln(s); pesh1.x := Pos(s[1],LITERA); Val(s[2],pesh1.y,Rez);
Write('Поле, где находится вторая пешка: '); Readln(s); pesh2.x := Pos(s[1],LITERA); Val(s[2],pesh2.y,Rez);
Rez := 0; If (abs(slon.x - king.x) = abs(slon.y - king.y)) then Inc(Rez); If (abs(slon.x - pesh1.x) = abs(slon.y - pesh1.y)) then Inc(Rez); If (abs(slon.x - pesh2.x) = abs(slon.y - pesh2.y)) then Inc(Rez); If (Rez = 0) then Writeln(#13#10,'NO') else Writeln(#13#10,Rez,' угроз'); ReadKey; End. Вот, сделал! Даж на пару не пошел :)) Оптимизировал ввод данных. А твоя ошибка кажется в том, что ты ABS только в одной скобки условия использовал, а нужно в обоих.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |