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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2009, 20:51   #1
Lees27
 
Регистрация: 20.05.2009
Сообщений: 5
По умолчанию

Вот собственно задачка:
Разбиваем экран на шесть частей (две строки и три столбца), в каждом из которых строим вложенные квадраты, используя принцип: если оба (строка и столбец) – чётные или нечётные, вращаем по часовой стрелке, если одна (один) чётная, а другая (другой) – нечётная, вращаем против часовой стрелки.
Помогите решить, заранее спасибо!

Квадраты построила, по какой формуле вращать эти квадраты? Подскажите, плизззз

Последний раз редактировалось Stilet; 21.05.2009 в 11:41.
Lees27 вне форума Ответить с цитированием
Старый 21.05.2009, 11:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Квадраты построила,
Код в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.05.2009, 13:08   #3
Lees27
 
Регистрация: 20.05.2009
Сообщений: 5
По умолчанию

Код:
program ayham12;
uses graph,crt;
const DriverDirectory='c:\tp7\BGI';
var
x1,y1,x11,y11,x2,y2,x22,y22,x3,y3,x 33,y33:longint;
x4,y4,x44,y44,x5,y5,x55,y55,x6,y6,x 66,y66:longint;
n,dr,mo:integer;
begin
dr:=detect;
initgraph(dr,mo,DriverDirectory);
x1:=getmaxx div 18;x11:=(getmaxx div 18)*5;
y1:=getmaxy div 12;y11:=(getmaxy div 12)*5;
x2:=(getmaxx div 18)*7;x22:=(getmaxx div 18)*11;
y2:=getmaxy div 12;y22:=(getmaxy div 12)*5;
x3:=(getmaxx div 18)*13;x33:=(getmaxx div 18)*17;
y3:=getmaxy div 12;y33:=(getmaxy div 12)*5;
x4:=getmaxx div 18;x44:=(getmaxx div 18)*5;
y4:=(getmaxy div 12)*7;y44:=(getmaxy div 12)*11;
x5:=(getmaxx div 18)*7;x55:=(getmaxx div 18)*11;
y5:=(getmaxy div 12)*7;y55:=(getmaxy div 12)*11;
x6:=(getmaxx div 18)*13;x66:=(getmaxx div 18)*17;
y6:=(getmaxy div 12)*7;y66:=(getmaxy div 12)*11;
cleardevice;
setcolor(10);
line(0,getmaxy div 2,getmaxx,getmaxy div 2);
line(getmaxx div 3,0,getmaxx div 3,getmaxy);
line((getmaxx*2) div 3,0,(getmaxx*2) div 3,getmaxy);
setcolor(14);
repeat
line(x1,y1,x1,y11);
line(x1,y11,x11,y11);
line(x11,y11,x11,y1);
line(x11,y1,x1,y1);
{rectangle(x1,y1,x11,y11);
rectangle(x2,y2,x22,y22);
rectangle(x3,y3,x33,y33);
rectangle(x4,y4,x44,y44);
rectangle(x5,y5,x55,y55);
rectangle(x6,y6,x66,y66);}
setcolor(green);
if odd(x4)=true then begin
setcolor(5);
x1:=round (x1*cos(30)-y1*sin(30));
y1:=round (x1*sin(30)+y1*cos(30));
x11:=round (x11*cos(30)-y11*sin(30));
y11:=round (x11*sin(30)+y11*cos(30));
{x11:=round ((x11*cos(30))-(y11*sin(30)));
y11:=round ((Y11*cos(30))-(x11*sin(30)));
{x1:=round (x1-4);x11:=round (x11+4);
y1:=round (y1-4);y11:=round (y11+4);
x2:=round (x2+4);x22:=round (x22-4);
y2:=round (y2+4);y22:=round (y22-4);
x3:=round (x3-4);x33:=round (x33+4);
y3:=round (y3-4);y33:=round (y33+4);
x4:=round (x4-4);x44:=round (x44+4);
y4:=round (y4-4);y44:=round (y44+4);
x5:=round (x5+4);x55:=round (x55-4);
y5:=round (y5+4);y55:=round (y55-4);
x6:=round (x6-4);x66:=round (x66+4);
y6:=round (y6-4);y66:=round (y66+4);}
end;
delay(10000);
until keypressed; {(x11>(getmaxx div 3));}
readln;
closegraph;
cleardevice;
end.
Lees27 вне форума Ответить с цитированием
Старый 21.05.2009, 13:17   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет Rectangle не подходит.
Вот пример построения многоугольника:

Код:
 uses Graph;
var
  grDriver: Integer;
  grMode: Integer;
  x,y,a,b,ErrCode,i: longint;
  ang:real;
procedure mgran;
const n=6 ;
var i:byte;rx,ry,rang,angle,ang:real;
 atp:array[0..n] of pointtype;
 atp2:array[0..n] of pointtype;
begin
 ang:=2*pi/n;
 angle:=(2*pi*ang)/360;
 angle:=ang;
 rang:=angle;
 for i:=0 to n do begin
  rx:=cos(angle);
  ry:=sin(angle);
  atp[i].x:=round(x+100*rx);
  atp[i].y:=round(y+100*ry);
  atp2[i].x:=atp[i].x+100;
  atp2[i].y:=atp[i].y+10;
  moveto(atp[i].x,atp[i].y);
  lineto(atp2[i].x,atp2[i].y);

  angle:=angle+rang;
 end;
 drawpoly(n+1,atp);{}
{ drawpoly(n+1,atp2);{}

end;
begin
  grDriver := Detect;
  InitGraph(grDriver, grMode,'');{}
  ErrCode := GraphResult;
  if ErrCode = grOk then
  begin  { Do graphics }
   x:=200;y:=200; a:=200;b:=300;
    mgran;
    readln;
    CloseGraph;
  end
  else
    Writeln('Graphics error:', GraphErrorMsg(ErrCode));
end.
Строй квадраты таким способом (процедура procedure mgran для квадрата const n=4;
И угол указывай начальный в переменке ang
Потом изменяй ее и получишь вращение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать новый массив,содержащий отрицательные элементы - Задача по PASCAl. Waia Помощь студентам 2 17.12.2008 18:27
задача в Pascal alina777 Помощь студентам 3 06.12.2008 18:55
Задача на Pascal Skippi Помощь студентам 8 12.09.2008 17:01
Задача [Pascal] [Smarik] Помощь студентам 4 04.02.2008 15:50