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

Тема в разделе "C/C++/C#", создана пользователем include, 14 дек 2010.

Статус темы:
Закрыта.
  1. include

    include Гость

    Точка на плоскости задается своими коо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 то точки входят в прямоугольник, а если нет то не входят.
    Как записать в СИ - ненаю.
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Наработки? Идеи? Планы на будущее?
     
  3. include

    include Гость

    не смейтесь
    Код (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();
    }
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Не уходи пока. Сейчас я подумаю.
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Проверь.
    Код (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;
    }
     
  6. include

    include Гость

    СПАСИБО ОГРОМНОЕ.
     
Загрузка...
Похожие Темы - Задача Массив точек
  1. евгений311
    Ответов:
    0
    Просмотров:
    1.144
  2. Sherlock
    Ответов:
    1
    Просмотров:
    1.365
  3. fatpunk
    Ответов:
    0
    Просмотров:
    1.137
  4. filpaul
    Ответов:
    1
    Просмотров:
    1.004
  5. Lizzz
    Ответов:
    1
    Просмотров:
    1.246
Статус темы:
Закрыта.

Поделиться этой страницей