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

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

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

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

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

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

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

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

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

4
Puporev
Модератор
54575 / 42085 / 29057
Регистрация: 18.05.2008
Сообщений: 99,253
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
Модератор
54575 / 42085 / 29057
Регистрация: 18.05.2008
Сообщений: 99,253
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-задача по теме «Записи (структуры)»
По данным сведениям об учениках класса определить среднюю массу мальчиков и...

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

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


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

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

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