Задача: Массив точек, удаление точек не попадающих в прямоугольник

  • Автор темы include
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

include

#1
Точка на плоскости задается своими кооpдинатами. Дано
n (n<=100) точек. Удалить точки,не попадающие
в заданный пpямоугольник и найти сpеди оставшихся точку,
pасстояние от котоpой до пpямоугольника минимально.
Замечание. Расссматpивать только пpямоугольники со стоpона-
ми, паpаллельными кооpдинатным осям.



Знаю только что прямоугольник мона ввести 2-мя точками (левой верхней x1y1 и правой нижней x2y2)
если j>x1 && j<x2 && i>y2 && i<y1 то точки входят в прямоугольник, а если нет то не входят.
Как записать в СИ - ненаю.
 
I

include

#3
Наработки? Идеи? Планы на будущее?
не смейтесь
C++:
//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
unsigned n,i,j,a,x1,x2,y1,y2;
int A[1000][1000],prin;
clrscr();
printf("Vvedite kolichestvo tochek ");
scanf("%d",&a);
if (a>0 && a<=100)
{
for (n>0 && n<=a)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",& mas [i][j]);
}
}
printf ("vvedite koordinatyu levoy verhney verhinyu pryamoug");
scanf("%d",&x1);
scanf("%d",&y1);
printf ("vvedite koordinatyu pravoy nijney verhinyu pryamoug");
scanf("%d",&x2);
scanf("%d",&y2);
printf("vvedite koordinatyu %d-oy tochki",n);
scanf("%d",&i);
scanf("%d",&j);
for(i=0;i<n;i++)
{
for(j=1;j<n;j++)
{
if (x1<j && x2>j && y2>i && y1<i)
printf ("tochki prinadlejaschie pryamougolniku");
scanf("%d",&x1);
scanf("%d",&y1);
scanf("%d",&x2);
scanf("%d",&y2);
}
}
}
}
else
printf ("Vvedeno ne korrektnoe znachenie kolichestva tochek);
getch();
}
 

lazybiz

Well-known member
03.11.2010
1 339
0
#5
Проверь.
C++:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define		xmin( a, b )		((a) < (b) ? (a) : (b))

typedef struct {
int	x, y;
} point;

int main( void )
{
point *	p;
int		i, n;
int		d, d0, d1, j = -1;
int		x1, y1, x2, y2;

printf( "Vvedite kol-vo tochek: " );
scanf( "%d", &n );
if ( n > 100 ) {
printf( "Kol-vo tochek doljno byt <= 100\n" );
return 1;
}

printf( "Vvedite verhnuu levuu tochku pryamougolnika (x1, y1):\n" );
scanf( "%d", &x1 );
scanf( "%d", &y1 );
printf( "Vvedite nijnuu pravuu tochku pryamougolnika (x2, y2):\n" );
scanf( "%d", &x2 );
scanf( "%d", &y2 );
d = x2 - x1;
if ( (y2 - y1) > d ) d = y2 - y1;

p = (point *)malloc( n * sizeof( point ) );

printf( "Vvedite tochki:\n" );
for ( i = 0; i < n; i++ ) {
printf( "point #%d x: ", i );
scanf( "%d", &p[i].x );
printf( "point #%d y: ", i );
scanf( "%d", &p[i].y );
}

for ( i = 0; i < n; i++ ) {
if ( p[i].x >= x1 && p[i].x <= x2 && p[i].y >= y1 && p[i].y <= y2 ) {
d0 = xmin( p[i].x - x1, p[i].y - y1 );
d1 = xmin( x2 - p[i].x, y2 - p[i].y );
d0 = xmin( d0, d1 );
if ( d0 < d ) {
j = i;
d = d0;
}
}
}

printf( "Tochka s minimalnym rasstojaniem ot prjamougolnika: %d - %d.%d", j, p[j].x, p[j].y );
fflush( stdout );

getch();
return 0;
}
 
Статус
Закрыто для дальнейших ответов.