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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2007, 22:31   #1
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию Програма для вывода геометрической фигуры

Здраствуйте. у меня задание написать програму которая выводит на екран прямоугольник по координатам которые вводит пользователь, прямоугольник нужно заполнить точками. я написал програму, но там не получаеться одна строка... ПОдскажите пожалуйста
Код:
 
program graph;
uses crt,graph;
var x1,x2,y1,y2,driver,mode:integer;
begin
write('x1=');
readln(x1);
write('x2=');
readln(x2);
write('y1=');
readln(y1);
write('y2=');
readln(y2);
driver:=detect;
initgraph(driver,mode,'');
setcolor(10);
rectangle(x1,y1,x2,y2);
setfillstyle(11,3);
floodfill(x1,y1,10);
readln;
end.
В выделеной строчки есть проблема, при введеных данных, прямоугольник не заполняеться точками, НО если при определенных условиях, то заполняеться:
floodfill(x1-1,y1+1,10) - для x1>x2 and y1>y2
floodfill(x1+1,y1+1,10) - для x1<x2 and y1<y2
Помогите как то объеденить эти условия, ну или как правильно задать парметры?

Последний раз редактировалось Alex21; 24.10.2007 в 10:01. Причина: code
Hworang вне форума Ответить с цитированием
Старый 12.10.2007, 09:30   #2
madmot
Форумчанин
 
Регистрация: 04.09.2007
Сообщений: 155
По умолчанию

FloodFill - Заполняет область отобpажения текущей кистью, огpаниченной Color.
Ты указывашь точку на линии прямоугольника (как бы внутри линии), естественно ничего не происходит т.к. эта линия и есть сама себе граница по цвету.
Соответственно, когда ты указываешь точку внутри ограниченной области (x1+1,y1+1) то происходит заливка.
Условие можно поставить примерно так:
if (x1>x2) and (y1>y2) Then floodfill(x1-1,y1+1,10);
if (x1<x2) and (y1<y2) Then floodfill(x1+1,y1+1,10);
madmot вне форума Ответить с цитированием
Старый 12.10.2007, 14:45   #3
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

Спасибо madmot.
С этой разобрался, есть еще одна задачка: нужно по координатам которые вводит пользователь выводить на екран отрезки, из них должен получиться многоугольник, и нужно посчитать периметр этого многоугольника.
Помогите пожалуйта решить эту задачку.
Hworang вне форума Ответить с цитированием
Старый 15.10.2007, 09:20   #4
madmot
Форумчанин
 
Регистрация: 04.09.2007
Сообщений: 155
По умолчанию

Держи
Код:
uses crt, graph;
var   Gd,Gm:integer;
      n,i,j:byte;
          v:array[1..100,1..2] of byte;
begin
 clrscr;
 write('Введите колво вершин n = ');readln(n);
 for i:=1 to n do
  begin
   write('Введите через пробел координаты ',i, '-ой вершины ');
   for j:=1 to 2 do
    read(v[i,j]);
    writeln;
  end;

 {инициализация граф. режима}
 Gd:=Vga;Gm:=VgaHi; InitGraph(Gd,Gm,'');
 {установка цвета и стиля линии}
 SetColor(LightGreen);SetLineStyle(SolidLn,0,NormWidth);
 {переход на первую вершину}
 MoveTo(v[1,1],v[1,2]);
 {ну и со второй в цикле по всем вершинам}
 for i:=2 to n do LineTo(v[i,1],v[i,2]);
 {вернемся в первую вершину}
 LineTo(v[1,1],v[1,2]);
 {ждем нажатия клавиши}
 readkey;
end.
madmot вне форума Ответить с цитированием
Старый 15.10.2007, 15:14   #5
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

спасибо.Подскажи что там еще нужно дописать, чтобы еще можно было считать периметр фигуры, которая получиться?
Hworang вне форума Ответить с цитированием
Старый 16.10.2007, 07:33   #6
madmot
Форумчанин
 
Регистрация: 04.09.2007
Сообщений: 155
По умолчанию

Расстояние между двумя точками равно длине вектора AB=(x2-x1;y2-y1), т.е. d=|AB|=Sqrt(Sqr(x2-x1)+Sqr(y2-y1))
Можно пройтись по массиву введенных вершин и посчитать периметр
madmot вне форума Ответить с цитированием
Старый 17.10.2007, 23:19   #7
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

Подскажи, где можно прочитать про масивы... а то я еще неуспел выучить их (
Hworang вне форума Ответить с цитированием
Старый 18.10.2007, 06:43   #8
madmot
Форумчанин
 
Регистрация: 04.09.2007
Сообщений: 155
По умолчанию

Попробуй здесь: http://www.intuit.ru/department/pl/plpascal/
ну а вообще: http://www.google.com/search?hl=ru&c...%BA&lr=lang_ru
madmot вне форума Ответить с цитированием
Старый 30.10.2007, 19:42   #9
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

madmot помоги пожалуйста дописать программу, а то немогу разобраться с масивами этими... заранее благодарен.
Hworang вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Програма чтения из файла на дельфи terminadoor Помощь студентам 18 03.07.2008 18:14
Запущена ли програма? RealSHELS Общие вопросы Delphi 4 14.06.2008 21:54
програма которая виводит все простие числа от 1 до 1000000 до 1сек PAWLO1993 Паскаль, Turbo Pascal, PascalABC.NET 7 12.06.2008 01:15
3D фигуры, как реализовать? Nikiforov Помощь студентам 2 22.02.2008 00:24
Програма тестирования студентов. lin Помощь студентам 6 20.04.2007 09:23