|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.05.2009, 04:58 | #1 |
Регистрация: 19.05.2009
Сообщений: 3
|
Не могу найти ошибку в коде!
Задача:
Шахматную доску будем представлять символьной матрицей размера 8x8. Даны натуральные числа n, причём 1<=n<=8 и m, причём 1<=m<=8. Эти числа номера вертикали и горизонтали, определяющие местоположения коня. Соответствующий элемент матрицы надо положить равным символу K. Поля находящиеся под угрозой коня, надо положить равными символу *, а остальные – символу 0. мой код программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) sg: TStringGrid; X: TEdit; Y: TEdit; ok: TButton; exit: TButton; procedure okClick(Sender: TObject); procedure exitClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; bul:boolean; // объявление логической переменной (true or false) a,b,i,j,x1,y1:integer; implementation {$R *.dfm} procedure TForm1.okClick(Sender: TObject); begin for i:=0 to 8 do for j:=0 to 8 do sg.Cells[i,j]:=' '; //Отчистка окна стрингрида try begin // позволяет избежать фатальные ошибки x1:=strtoint(x.text)-1; // перевод значения текстового в числовое y1:=strtoint(y.Text)-1; if (x1>-1) and (x1<8) and (y1>-1) and (y1<8) then // проверка корректности ввода begin for i:=0 to 8 do for j:=0 to 8 do inc(i); if (x1-i>-1) and (y1-i>-1) then sg.cells[x1-1,y1-2]:='*' else bul:=true; until bul; i:=0; bul:=false; repeat inc(i); if (x1-i>-1) and (y1-i>-1) then sg.cells[x1-2,y1-1]:='*' else bul:=true; until bul; i:=0; bul:=false; repeat inc(i); if (x1+i<8) and (y1+i<8) then sg.cells[x1+1,y1+2]:='*' else bul:=true; until bul; i:=0; bul:=false; repeat inc(i); if (x1+i<8) and (y1+i<8) then sg.cells[x1+2,y1+1]:='*' else bul:=true; until bul; i:=0; bul:=false; repeat inc(i); if (x1-i>-1) and (y1+i<8) then sg.cells[x1-1,y1+2]:='*' else bul:=true; until bul; i:=0; bul:=false; repeat inc(i); if (x1-i>-1) and (y1+i<8) then sg.cells[x1-2,y1+1]:='*' else bul:=true; until bul; i:=0; bul:=false; repeat inc(i); if (x1-i>-1) and (y1+i<8) then sg.cells[x1+2,y1-1]:='*' else bul:=true; until bul; i:=0; bul:=false; repeat inc(i); if (x1+i<8) and (y1-i>-1) then sg.cells[x1+1,y1-2]:='*' else bul:=true; until bul; sg.cells[x1,y1]:='K'; end; end; except Showmessage('Введите адекватные числа'); // ошибка ввода end; end; procedure TForm1.exitClick(Sender: TObject); begin Application.Terminate; end; end. |
20.05.2009, 09:27 | #2 |
Форумчанин
Регистрация: 23.10.2008
Сообщений: 460
|
Код:
Последний раз редактировалось fbus; 20.05.2009 в 09:54. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите найти ошибку в коде | Jora_Kornev | Общие вопросы Delphi | 10 | 10.01.2009 17:00 |
Помогите найти ошибку в коде! | alex2008ean | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 27.12.2008 18:31 |
Помогите найти ошибку в коде C++ | Жека:) | Помощь студентам | 15 | 29.10.2008 11:32 |
Памагите найти ошибку в коде...С++ | Goblin | Помощь студентам | 1 | 13.05.2008 18:15 |