Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 23.02.2010, 14:28   #1 (permalink)
shadnik
Новичок
 
Регистрация: 23.02.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Программа на Pascal. Помогите пожалуйста!

На шахматной доске ферзь занимает определенную позицию. Отметить положение
ферзя на шахматной доске буквой «Ф» и символом «*» те клетки шахматной доски, которые
находятся под боем ферзя.
Подсказка. Шахматную доску представить в виде двумерного массива размером 8*8.
Задание:
Разработать алгоритм и изобразить блок-схему вывода на экран монитора (печать) схемы
шахматной доски с отмеченным положением ферзя в виде буквы «Ф» и отмеченных
символом «*» клеток, находящихся под боем ферзя.
Входные данные:Координаты ферзя (вводятся с клавиатуры).
Выходные данные:Вывести на экран монитора (распечатать) схему шахматной доски в виде двумерного
массива с обозначенными номерами строк, буквенными обозначениями столбцов,
отмеченным положением ферзя в виде буквы «Ф» и отмеченных символом «*» клеток,
находящихся под боем ферзя. Остальные клетки пометить символом «0».
shadnik вне форума   Ответить с цитированием

Старый 23.02.2010, 14:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Дам вам темы которые по своему содержанию напоминают ваш топик

Пожалуйста, помогите написать программку. Pascal Free
Ребят, помогите, пожалуйста, с Pascal
Помогите, пожалуйста, решить три задачи по Pascal
Помогите пожалуйста со строками в Pascal
Помогите, пожалуйста, написать программу на Object Pascal

Старый 23.02.2010, 16:44   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Пожалуйста. Единственное, во избежание путаницы с кодировками, я обозначил ферзя латинской буквой F, а не кириллической Ф. Пояснение - в первой части программы вводится положение ферзя в стандартной шахматной нотации, при этом отрабатываются как заглавные, так и строчные обозначения вертикалей (можно вводить и те, и другие). Учитывается также принятая нумерация горизонталей "снизу вверх". Блок-схемы, извините, не умею, тут уж Вы сами. А массив не понадобился.
Код:
VAR
 t:CHAR;
 i,j,Iq,Jq:INTEGER;

BEGIN
 WriteLn('Enter the Queen position, e.g. a2, c5, D2 etc. :');
 Read(t); ReadLn(Iq);
 Iq:=9-Iq;
 Jq:=ORD(t);
 IF Jq<73 THEN Jq:=Jq-64 ELSE Jq:=Jq-96;
 WriteLn;
 FOR i:=1 TO 8 DO
  begin
   Write(9-i:2,' ');
   FOR j:=1 TO 8 DO
    if (i=Iq) and (j=Jq) then Write(' F ') else
    if ((i=Iq) and (j<>Jq)) or
       ((i<>Iq) and (j=Jq)) or
       (ABS(i-Iq)=ABS(j-Jq)) then Write(' * ') else
    Write(' 0 ');
   WriteLn;
  end;
 Write('   ');
 For j:=1 to 8 do
  Write(' ',CHR(j+64),' ');
 WriteLn;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 23.02.2010, 17:07   #3 (permalink)
shadnik
Новичок
 
Регистрация: 23.02.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Большое спасибо
shadnik вне форума   Ответить с цитированием
Старый 23.02.2010, 17:11   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да, строчку с Qpos в описании переменных можно убрать - она осталась от другого варианта. Я поправил в тексте.
Vladimir_S вне форума   Ответить с цитированием
Старый 01.03.2010, 22:06   #5 (permalink)
SGE
Member
 
Регистрация: 04.06.2009
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 37
По умолчанию

У меня тут тоже кое-что есть:
Цитата:
Program ferzgraph;
Uses crt,graph;
Const a: array[1..8] of char=('a','b','c','d','e','f','g','h');
b: array[1..8] of char=('1','2','3','4','5','6','7','8');
d: array[1..8] of integer=(165,207,249,291,333,375,417,459);
e: array[1..8] of integer=(78,120,162,204,246,288,330,372);
Var gd,gm,x,y,xf,yf,zx,zy: integer; i,j: byte; c: char;
Procedure Dsk(x1,y1,x2,y2,k,p: integer);
Var i,j,sx,sy,xb,xc: integer;
begin
xb:=x1;
xc:=x2;
For j:=1 to k do
begin
For i:=1 to k do
begin
if (j mod 2 = 0) then
if (i mod 2 = 0) then
begin
Setfillstyle(1,15);
Bar(x1,y1,x2,y2);
end
else
begin
Setfillstyle(1,p);
Bar(x1,y1,x2,y2);
end
else if i mod 2 = 0 then
begin
Setfillstyle(1,p);
Bar(x1,y1,x2,y2);
end
else
begin
Setfillstyle(1,15);
Bar(x1,y1,x2,y2);
end;
sx:=x1;
x1:=x2+2;
x2:=2*x2-sx+2;
end;
x1:=xb;
x2:=xc;
sy:=y1;
y1:=y2+2;
y2:=2*y2-sy+2;
end;
end;
Procedure Linex(x1,y1,x2,y2,k,q,c: integer);
Var i: integer;
begin
Setcolor(c);
For i:=1 to k do
begin
Line(x1,y1,x2,y2);
x1:=x1 + q;
x2:=x2 + q;
end;
end;
Procedure Liney(x1,y1,x2,y2,k,q,c: integer);
Var i: integer;
begin
Setcolor(c);
For i:=1 to k do
begin
Line(x1,y1,x2,y2);
y1:=y1 + q;
y2:=y2 + q;
end;
end;
Begin
Randomize;
gd:=installuserdriver('bgi256',nil);
gm:=4;
Initgraph(gd,gm,'');
Repeat
Cleardevice;
x:=175;
y:=380;
Dsk(160,80,200,120,8,6);
Linex(201,80,201,414,7,42,7);
Liney(160,121,494,121,7,42,7);
Setfillstyle(6,8);
Bar(159,49,129,443);
Bar(495,49,525,443);
Bar(159,49,510,79);
Bar(159,414,510,443);
For i:=1 to 8 do
begin
Setcolor(15);
Settextstyle(1,0,3);
Outtextxy(x,413,a[i]);
x:=x+42;
end;
For i:=1 to 8 do
begin
Setcolor(15);
Settextstyle(1,0,3);
Outtextxy(140,y,b[i]);
y:=y-42;
end;
Settextstyle(4,0,4);
i:=random(8)+1;
j:=random(8)+1;
Setcolor(cyan);
Outtextxy(d[i],e[j],'Ф');
Setcolor(0);
For yf:=1 to 8 do
For xf:=1 to 8 do
begin
If (xf<>i) and (yf=j) or (yf<>j) and (xf=i) then
Circle(d[xf]+15,e[yf]+20,6);
If (xf=i) and (yf=j) then
begin
zx:=xf;
zy:=yf;
repeat
zx:=zx-1;
zy:=zy-1;
Circle(d[zx]+15,e[zy]+20,6);
Until (zx<1) or (zy<1);
zx:=xf;
zy:=yf;
repeat
zx:=zx+1;
zy:=zy+1;
Circle(d[zx]+15,e[zy]+20,6);
Until (zx>8) or (zy>8);
zx:=xf;
zy:=yf;
repeat
zx:=zx-1;
zy:=zy+1;
Circle(d[zx]+15,e[zy]+20,6);
Until (zx<1) or (zy>8);
zx:=xf;
zy:=yf;
repeat
zx:=zx+1;
zy:=zy-1;
Circle(d[zx]+15,e[zy]+20,6);
Until (zx>8) or (zy<1);
end;
end;
c:=readkey;
Until c=#13;
Closegraph;
End.
Только координаты определяются генератором случайных чисел.

Последний раз редактировалось SGE; 01.03.2010 в 22:10
SGE вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:28.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.