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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 20:08   #1
Katrina*
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 29
Вопрос не знаю как исправить ошибку

program eight_queens;
{$APPTYPE CONSOLE}
const
max=7;
m=2*max;
type
vector=array[0..max]of word;
var
solution:vector; //содержит номер занятой диагонали
Q_row:array[0..max]of boolean; //занятая горизонталь
Q_up_diag:array[-max..max]of boolean;//занятая вертикаль
Q_down_diag:array[0..m]of boolean;//занятая диагональ
done:boolean;//
row,col,diag:integer;//
total,count:word;

procedure remove_queen;//удаление ферзя("обнуление" флаговых массивов)
begin
Q_row[row]:=false;
Q_down_diag[col+row]:=false;
Q_up_diag[col-row]:=false;
end;

procedure backtrack;// cобственно, перебор
begin
dec(col);
row:=solution[col];
while (row=max)and(col>0)do
begin
remove_queen;
dec(col);
row:=solution[col];
end;
if row<max then begin remove_queen;
inc(row);
end else done:=true;
end;

procedure print;
begin
write(′ANSWER ′,count:2,′: ′);
write(′[′);
for col:=0 to max do
write(solution[col]:3);
writeln(′]′);
end;

begin
total:=0;
count:=0;
done:=false;
for row:=0 to max do
Q_row[row]:=false;
for diag:=-max to max do
Q_up_diag[diag]:=false;
for diag:=0 to m do
Q_down_diag[diag]:=false;
row:=0;
col:=0;

repeat
if Q_row[row]or Q_down_diag[col+row]or Q_up_diag[col-row] then
if row=max then backtrack else inc(row)
else
begin
solution[col]:=row;
Q_row[row]:=true;
Q_down_diag[col+row]:=true;
Q_up_diag[col-row]:=true;
if col=max then
begin
inc(total);
inc(count);
print;
remove_queen;
backtrack;
end
else
begin
inc(col);
row:=0;
end;
end;
until done;
writeln;
writeln(total);// количество решений
readln;
end.

Почему выдает ошибку в строке "{$APPTYPE CONSOLE} " Invalid compile directive??? Помогите пожалуйста...
Katrina* вне форума
Старый 21.12.2011, 20:11   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Это директива компилятора для дельфи, если запускаете в паскале просто уберите эту строку.
vovk вне форума
Старый 22.12.2011, 09:55   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) Название темы *ОПЯТЬ* не соответствует правилам форума.

2) Код *ОПЯТЬ* не оформлен тегами!


ЗАКРЫТО
Serge_Bliznykov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти ошибку... хотя я ее нашел... но не знаю как исправить))) ( удаление строки из файла) dykatob Общие вопросы C/C++ 0 03.06.2011 10:42
Как исправить ошибку yana33311 Паскаль, Turbo Pascal, PascalABC.NET 2 17.04.2011 21:07
Ошибка вроде простая, но не знаю, как её исправить mobilitialex Общие вопросы Delphi 3 15.04.2011 12:51
Допущена ошибка,не знаю как исправить sSilen Помощь студентам 8 08.01.2011 20:56
Как исправить ошибку? True_girl Помощь студентам 0 19.04.2010 22:47