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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2012, 20:35   #1
Velia
Новичок
Джуниор
 
Регистрация: 27.05.2012
Сообщений: 2
По умолчанию Помоги дописать программу "Резиновая окружность"

Привет! Очень надеюсь на вашу помощь.

Задание такое - Пользователь должен иметь возможность выбрать положение центра окружности с помощью перемещения граф. курсора. Фиксирование этой точки осуществляется нажатием клавиши
enter, рисование окружности должно осуществляться перемещением граф. курсора до повторного нажатия клавиши enter. Изменение размера окружности при фиксированном центре окружности: перемещение боковой точки превращает окружность эллипс, перемечение угловой точки изменяет размер окружности (эллипса).
В общем первую часть я написала, работает, а вот с эллипсом никак. Я конечно не программист и программа возможна корявая, но преподаватель ее уже видел, поэтому существенно ее изменять не желательно.

Код:
Program primer;
Uses crt, graph;
Const kurs: array[1..3] of string=('O программе','Построение рисунка','Выход');
Var   i,ent:integer;
      a:char;
      c:byte;
      x,y:integer;
      n:word;
Procedure titul;
begin
     clrscr;
     gotoxy(10,4);
     writeln('Уральский федеральный университет имени первого президента России Б.Н.Ельцина');
     gotoxy(40,15);
     writeln('Строительный институт');
     gotoxy(33,16);
     writeln('Кафедра гидравлики');
     gotoxy(12,19);
     writeln('Задание: "резиновая окружность"');
     gotoxy(12,30);
     writeln('Преподаватель:');
     gotoxy(17,31);
     writeln('Служеникина Н.В.');
     gotoxy(12,32);
     writeln('Студент группы CТ-110502:');
     gotoxy(17,33);
     writeln('Генова В.В.');
 
     gotoxy(30,43);
     writeln('Екатеринбург 2012');
 
repeat
until keypressed;
end;
{=================================}
Procedure kursor(x,y,n:word);
 
 
          begin
 
               OutTextXY(200,10,'Вenter');
               setcolor(n);
               line(x-5,y,x+5,y);
               line(x,y-5,x,y+5);
 
          end;
{================================}
 
Procedure dvigenie;
Var p,t:integer;
    x1,y1:integer;
    r:real;
    a1,a2:char;
    r1,r2:real;
   
          begin
               p:=Detect;
               ent:=0;
               initgraph(p,t,'');
               cleardevice;
               x:=60;
               y:=120;
               repeat
                   n:=8;
                   kursor(x,y,n);
                   if keypressed then
                        begin
                            a1:=readkey;
                            if ord(a1)=0 then
                               begin
 
                                   n:=0;
                                   kursor(x,y,n);
                                   a1:=readkey;
                                   case ord(a1) of
                                       72:begin y:=y-10;
                                          end;
                                       80:begin y:=y+10;
                                          end;
                                       75:begin x:=x-10;
                                          end;
                                       77:begin x:=x+10;
                                          end
                                        
                                   end;
 
                               end;
                            end
                            else
 
                                case ord(a1) of
                                   13:Begin
                                         If ent=0 then
 
                                            begin
 
                                              x1:=x;
                                              y1:=y;
                                              circle(x1,y1,2);
                                              ent:=ent+1;
  OutTextXY(200,20,'Теперь выберите радиус окружности и нажмите enter');
                                            end;
                                         if ent<>0 then
                                         begin
                                             if (x>=x1) and (y1>=y) then
                                                r:=sqrt(sqr(x-x1)+sqr(y1-y));
                                             if (x<=x1) and (y1>=y) then
                                                r:=sqrt(sqr(x1-x)+sqr(y1-y));
                                             if (x>=x1) and (y<=y1) then
                                                r:=sqrt(sqr(x1-x)+sqr(y-y1));
                                             if (x>=x1) and (y>=y1) then
                                                r:=sqrt(sqr(x-x1)+sqr(y-y1));
 
                                             ellipse(x1,y1,0,360,round(r),round(r));
                                          end;
                                           end;
                                   end;
                        end;
 
               until (x>=630) or (y>=470) or (x<=10) or (y<=10) or (a1=chr(27)) ;
 
 
       closegraph;
end;
{========================}

Последний раз редактировалось Serge_Bliznykov; 28.05.2012 в 11:33.
Velia вне форума Ответить с цитированием
Старый 27.05.2012, 20:36   #2
Velia
Новичок
Джуниор
 
Регистрация: 27.05.2012
Сообщений: 2
По умолчанию

Все не влезло. Это концовка

Код:
Begin
c:=1;
repeat
     clrscr;
     For i:=1 to 3 do
     begin
          If i=c then
          textcolor(15)
          else
          textcolor(4);
          gotoxy(28,10+i);
          write(kurs[i]);
     end;
         a:= readkey;
     if a=Chr(0) then
     begin
           a:=readkey;
            case ord(a) of
             72:begin
                   c:=c-1;
                   if c=0 then c:=3;
                 end;
             80:begin
                  c:=c+1;
                  if c=4 then c:=1;
                end;
 
            end;
     end
     else
         case ord(a) of
         13: case c of
                 1: titul ;
                 2: dvigenie ;
                 3: a:=chr(27) ;
 
             end;
 
         end;
 until a=chr(27);
End.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 28.05.2012 в 11:34.
Velia вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помоги с игрой "змейка" Aleksa92 Помощь студентам 0 18.12.2011 20:49
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
запрос (выйти(завершить программу)) "Y";"N". SKS Паскаль, Turbo Pascal, PascalABC.NET 7 15.01.2009 16:32