Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
ZevsNet
78 / 50 / 46
Регистрация: 30.09.2010
Сообщений: 138
#1

Записи (структуры)геометрия(прямоугольники) - Pascal ABC

07.01.2011, 16:21. Просмотров 461. Ответов 4
Метки нет (Все метки)

Здравствуйте! Будьте так добры решите вот такую задачку..
Дана информация о расположении прямоугольников на плоскости (координаты левого
верхнего угла, ширина и высота). Необходимо найти все прямоугольники которые не пересекаются с остальными
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2011, 16:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Записи (структуры)геометрия(прямоугольники) (Pascal ABC):

Записи(структуры)
Распечатать фамилии детей данного детского сада,которые родились в...

Записи (структуры) в паскале
Здравствуйте ;) Не могу справиться с решением тривиальной проблемы :( Есть...

Тема: Записи(структуры)
Распечатать список учеников, фамилии которых начинаются на букву В, с...

Интегрированные структуры данных, записи
Для заданной прикладной области разработать описание объектов этой области....

Структуры данных:массивы,строки,записи.
Здравствуйте ув.программисты. Помогите пжл решить задачу Дана строка...

Pascal-задача по теме «Записи (структуры)»
По данным сведениям об учениках класса определить среднюю массу мальчиков и...

4
Puporev
Модератор
54136 / 41769 / 28877
Регистрация: 18.05.2008
Сообщений: 98,307
08.01.2011, 16:39 #2
Считаем что если прямоугольник внутри другого, то они пересекаются, поскольку речь не идет о пересечении сторон.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
uses crt;
const nmax=10;
type prm=record
         x,y,w,h:integer;
         end;
function NoPer(a,b:prm):boolean;
begin
NoPer:=(a.x+a.w<b.x)or(a.x>b.x+b.w)or(a.y+a.h<b.y)or(a.y>b.y+b.h);
end;
var a:array[1..nmax] of prm;
    n,i,j,k:byte;
    f:boolean;
begin
clrscr;
repeat
write('Количество прямоугольников до ',nmax,' n=');
read(n);
until n in [1..nmax];
writeln('Введите параметры прямоугольников');
for i:=1 to n do
 begin
  writeln('Прямоугольник ',i);
  writeln('Координаты левого верхнего угла:');
  read(a[i].x,a[i].y);
  writeln('Ширина и высота:');
  read(a[i].w,a[i].h);
 end;
k:=0;
writeln('Не пересекаются с другими:');
for i:=1 to n do
 begin
  j:=i+1;f:=true;
  while(j<=n)and f do
  if not (NoPer(a[i],a[j]))and(i<>j)then f:=false
  else j:=j+1;
  if f then
   begin
    k:=1;
    writeln('Прямоугольник ',i,' x=',a[i].x,' y=',a[i].y,' w=',a[i].w,' h=',a[i].h);
   end;
  end;
if k=0 then write('Таких прямоугольников нет!');
end.
1
ZevsNet
78 / 50 / 46
Регистрация: 30.09.2010
Сообщений: 138
08.01.2011, 21:37  [ТС] #3
А если координаты и размеры берутся из хранящегося файла типизированного, а результат заносится в выходной файл. И при всем этом предусмотреть возможность просмотра выходного фаила!. как это можно воплотить в данную задачу?
0
Puporev
Модератор
54136 / 41769 / 28877
Регистрация: 18.05.2008
Сообщений: 98,307
09.01.2011, 08:01 #4
Создайте типизированный файл с данными
var f:file of prm;
Выходной текстовый файл
var g:text;
Также как массив просматриваете его с помощью seek, read и 2х переменных типа rm;
результаты пишите в текстовый файл, Текст латиницей, или перекодировать.
0
ZevsNet
78 / 50 / 46
Регистрация: 30.09.2010
Сообщений: 138
09.01.2011, 18:01  [ТС] #5
Будьте так добры , проверти пожалуйста!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const nmax=5;
type
    prm=record
    x,y,w,h:integer;
    end;
         
function NoPer(a,b:prm):boolean;
begin
NoPer:=(a.x+a.w<b.x)or(a.x>b.x+b.w)or(a.y+a.h<b.y)or(a.y>b.y+b.h);
end;
 
var a : array[1..nmax] of prm;
    perem : prm;
    b,n,i,j,k : byte;
    f : boolean;
    Tfile:file of prm;
    Ttext:text;
begin
Assign(Tfile,'file');
Assign(Ttext,'final.txt');
{reset(Tfile);
    repeat
    write('Количество прямоугольников до ',nmax,' n=');
    read(n);
    until n in [1..nmax];
    writeln('Введите параметры прямоугольников');
 
    for i:=1 to n do
        begin
            writeln('Прямоугольник ',i);
            writeln('Координаты левого верхнего угла:');
            read(a[i].x,a[i].y);
            writeln('Ширина и высота:');
            read(a[i].w,a[i].h);
            perem:=a[i];
            write(Tfile,perem);
        end;
close(Tfile);}
 
reset(Tfile);
    i:=1;
    while not eof(Tfile) do
    begin
        read(Tfile,perem);
        a[i]:=perem;
        inc(i);
        inc(b);
    end;
close(Tfile);
 
k:=0;
for i:=1 to b-1 do
    begin
        j:=i+1;
        f:=true;
        while(j<=(b-1))and f do
        if not (NoPer(a[i],a[j]))and(i<>j)then f:=false
        else j:=j+1;
        
        if f then
            begin
                k:=1;
                rewrite(TText);
                writeln(TText,'Не пересекаются с другими:');
                writeln(TText,'Прямоугольник ',i,' x=',a[i].x,' y=',a[i].y,' w=',a[i].w,' h=',a[i].h);
                close(TText);
            end;
    end;
    
if k=0 then
    begin
        rewrite(TText);
        writeln(TText,'Не пересекаются с другими:');
        write(TText,'Таких прямоугольников нет!');
        close(TText);
    end;
end.
0
09.01.2011, 18:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2011, 18:01
Привет! Вот еще темы с решениями:

Записи (структуры), назначение стипендии студентам по результатам сессии
Сост. программу назначения стипендии студентам по результатам сессии, используя...

Записи/Структуры. Данные считываются из внешнего текстового файла
помогите написать проги по решению этих двух задач)) данные считываются из...

Расположить прямоугольники
расположить прямоугольники в таком порядке

Отрезаем прямоугольники
Нужно реализовать в Pascal. Что бы были входные(1.in) и выходные(1.out) данные....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru