Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 23:35   #1
Morfik1
 
Регистрация: 24.04.2013
Сообщений: 3
По умолчанию Задача о 8 ферзях

program ferz;
uses crt,ABCObjects,ABCChessObjects,Even ts,Utils;
var s,i,j:integer;
a:array[1..8] of boolean;
b:array[2..16] of boolean;

c:array[-7..7] of boolean;
x:array[1..8]of integer;
d:array[1..8,1..8]of integer;
g:array[1..8,1..8]of integer;
procedure vivod;
var i,j,k:integer; br: ChessBoardABC;ChessFigures: ChessSetABC;wq: ChessFigureABC;
begin
br:=CreateChessBoardABC(20,20,8,8,5 0,clwhite);ChessFigures:=ChessSetAB C.Create(PascalABCPath+'Media\Image s\Chess.wmf',45,br);
s:=s+1;
for i:=1 to 8 do
for j:=1 to 8 do
d[i,j]:=0;
for k:=1 to 8 do
d[8-x[k]+1,k]:=1;
for i:=1 to 8 do
begin
for j:=1 to 8 do
{write(d[i,j]:2);
writeln;}
if d[i,j]=1 then begin wq:=ChessFigures.CreateWhiteQueen(i ,j); end;
end;
readln;
end;

procedure trq(i:integer);
var j:integer;
begin

for j:=1 to 8 do
if a[j]and b[i+j]and c[i-j] then
begin
x[i]:=j;
a[j]:=false;b[i+j]:=false;c[i-j]:=false;
if i<8 then trq(i+1) else vivod;
a[j]:=true;b[i+j]:=true;c[i-j]:=true;
end;
end;
Begin
clrscr;
for i:=1 to 8 do a[i]:=true;
for i:=2 to 16 do b[i]:=true;
for i:=-7 to 7 do c[i]:=true;
s:=0;
trq(1);
end.

Как сделать так, чтобы первого ферзя ставил я, а он находил вариант расположения ферзей где мой тоже есть и выводил на экран. Подскажите плиз.

Последний раз редактировалось Morfik1; 31.05.2013 в 23:43. Причина: дополнение
Morfik1 вне форума Ответить с цитированием
Старый 01.06.2013, 00:50   #2
Morfik1
 
Регистрация: 24.04.2013
Сообщений: 3
По умолчанию

разобрался сам
Morfik1 вне форума Ответить с цитированием
Старый 01.06.2013, 22:13   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Сначала разместить Вашего ферзя, а уже потом пытаться "воткнуть" остальных.

PS. Легче написать программу с нуля, чем разбираться в неотформатированной программе без единого комментария и с ничего не говорящими именами идентификаторов.
Мне кажется, помещать программу в таком виде - просто неуважение к читателю.
s-andriano вне форума Ответить с цитированием
Старый 03.06.2013, 00:55   #4
Morfik1
 
Регистрация: 24.04.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
PS. Легче написать программу с нуля, чем разбираться в неотформатированной программе без единого комментария и с ничего не говорящими именами идентификаторов.
Мне кажется, помещать программу в таком виде - просто неуважение к читателю.
По мне лучше быстренько самому пробежаться глазами по программному коду чем комментарии читать.Но в следующий раз когда буду выкладывать, просить совета прокомменчу.
Morfik1 вне форума Ответить с цитированием
Старый 03.06.2013, 07:59   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Этого недостаточно.
Еще нужно форматировать текст программы и давать переменным осмысленные имена.

Опять же, комментарии не должны дублировать код программы:
в коде мы видим, что делается, а в комментариях - зачем.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шахматная головоломка о восьми Ферзях ( Turbo Pascal ) krolik_21 Помощь студентам 7 31.03.2013 11:50
Задача о ферзях. FCShadow Помощь студентам 0 04.06.2011 23:56
Задача о восьми ферзях на Nemerle natalya_57 Помощь студентам 3 08.07.2010 11:36
программирование на Си(задача о ферзях) osichev Помощь студентам 4 04.10.2009 18:55