![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
strangerfx |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть такая задача: Написать программу реализующую передвижение коня по всем 64 клеткам шахматной доски.
Мое решение такое: Код Program lab; uses crt; var mas:array[1..8,1..8] of integer; i,j:integer; v:byte; procedure pg; var e:integer; begin gotoxy(15,4); write(#201); for e:=1 to 51 do write(#205); writeln(#187); for e:=1 to 17 do begin gotoxy(15,wherey); write(#186); gotoxy(67,wherey); writeln(#186); end; gotoxy(15,wherey); write(#200); for e:=1 to 51 do write(#205); writeln(#188); end; procedure a(y:integer;x:integer;n:byte); var i,j:integer; begin if (x+1>0) and (x+1<9) and (y-2>0) and (y-2<9) and (mas[y-2,x+1]=0) then begin mas[y-2,x+1]:=n; a(y-2,x+1,n+1); mas[y-2,x+1]:=0; end; if (x+2>0) and (x+2<9) and (y-1>0) and (y-1<9) and (mas[y-1,x+2]=0) then begin mas[y-1,x+2]:=n; a(y-1,x+2,n+1); mas[y-1,x+2]:=0; end; if (x+2>0) and (x+2<9) and (y+1>0) and (y+1<9) and (mas[y+1,x+2]=0) then begin mas[y+1,x+2]:=n; a(y+1,x+2,n+1); mas[y+1,x+2]:=0; end; if (x+1>0) and (x+1<9) and (y+2>0) and (y+2<9) and (mas[y+2,x+1]=0) then begin mas[y+2,x+1]:=n; a(y+2,x+1,n+1); mas[y+2,x+1]:=0; end; if (x-1>0) and (x-1<9) and (y+2>0) and (y+2<9) and (mas[y+2,x-1]=0) then begin mas[y+2,x-1]:=n; a(y+2,x-1,n+1); mas[y+2,x-1]:=0; end; if (x-2>0) and (x-2<9) and (y+1>0) and (y+1<9) and (mas[y+1,x-2]=0) then begin mas[y+1,x-2]:=n; a(y+1,x-2,n+1); mas[y+1,x-2]:=0; end; if (x-2>0) and (x-2<9) and (y-1>0) and (y-1<9) and (mas[y-1,x-2]=0) then begin mas[y-1,x-2]:=n; a(y-1,x-2,n+1); mas[y-1,x-2]:=0; end; if (x-1>0) and (x-1<9) and (y-2>0) and (y-2<9) and (mas[y-2,x-1]=0) then begin mas[y-2,x-1]:=n; a(y-2,x-1,n+1); mas[y-2,x-1]:=0; end; if n=65 then begin repeat clrscr; pg; gotoxy(17,5); write('‚ўҐ¤ЁвҐ ®ЇаҐ«Ґ«сго жЁдаг ¤«п ўлЇ®«ҐЁп Є®¬ ¤л:'); gotoxy(17,7); write('1:','„«п ўлў®¤ १г«мв в ':47); gotoxy(17,9); write('2:','„«п ўл室 ':47); gotoxy(17,11); write('‚ў®¤->: '); {$I-} readln(v); {$I+} if IOResult<>0 then begin clrscr; writeln('ЌҐЄ®а४вл© ўў®¤,ўўҐ¤ЁвҐ зЁб«® гЄ § ®Ґ ў ¬Ґо'); writeln('„«п Їа®¤®«¦ҐЁп а Ў®вл ¦¬ЁвҐ Enter'); readln; end else begin case v of 1:begin clrscr; writeln('ђҐ§г«мв в'); writeln('======================='); for i:=1 to 8 do begin for j:=1 to 8 do write(mas[i,j]:2,' '); writeln; end; writeln('======================='); readln; clrscr; end; 2: halt; end; end; until IOResult<>0; end; end; begin fillchar(mas,sizeof(mas),0); repeat clrscr; pg; gotoxy(17,5); write('‚ўҐ¤ЁвҐ ®ЇаҐ«Ґ«сго жЁдаг ¤«п ўлЇ®«ҐЁп Є®¬ ¤л:'); gotoxy(17,7); write('1:','„«п агз®Ј® ўў®¤ з «мле Є®®а¤Ё в':47); gotoxy(17,9); write('2:','„«п ўв®¬ вЁзҐбЄ®Ј® § ¤ Ёп Є®®а¤Ё в':47); gotoxy(17,11); write('3:','„«п ўл室 ':47); gotoxy(17,13); write('‚ў®¤->: '); {$I-} readln(v); {$I+} if IOResult<>0 then begin clrscr; writeln('ЌҐЄ®а४вл© ўў®¤,ўўҐ¤ЁвҐ зЁб«® гЄ § ®Ґ ў ¬Ґо'); writeln('„«п Їа®¤®«¦ҐЁп а Ў®вл ¦¬ЁвҐ Enter'); readln; end else begin case v of 1: begin clrscr; writeln('‚ўҐ¤ЁвҐ з «млҐ Є®®а¤Ё вл'); write('y->: '); readln(i); write('x->: '); readln(j); clrscr; mas[i,j]:=1; a(i,j,2); end; 2: begin clrscr; randomize; i:=random(7)+1; j:=random(7)+1; mas[i,j]:=1; a(i,j,2); end; 3: exit; end; end; until IOResult<>0; end. Нужно оптимизировать код для повышения скорости работы программы. Тегами [CОDE][/CОDE] пользуйся... Сообщение отредактировано: volvo - 12.03.2006 13:13 |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 2:11 |