Форум программистов, компьютерный форум CyberForum.ru

Даны два множества точек на плоскости. Из первого множества выбрать три различные точки так, чтобы треугольник с вершинами в этих точках содержал (ст - C++

Восстановить пароль Регистрация
 
Denis Gresko
Сообщений: n/a
22.12.2013, 12:20     Даны два множества точек на плоскости. Из первого множества выбрать три различные точки так, чтобы треугольник с вершинами в этих точках содержал (ст #1
Уважаемые в чем проблема

#include "stdafx.h"
#include "conio.h"
#include "time.h"
#include "math.h"
#include "stdlib.h"
#include "iostream"

void rfv(float *A, int M, int N, int D)
{int i, j; for (i=0;i<M;i++) {
for (j=0;j<N;j++)
{
*(A+i*D+j)=-10+rand()%20;
}
}
}

void prt(char s[], float *A, int N, int M, int D)
{
int i, j;
printf("%s\n", s);
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
printf("%4.f", *(A+i*D+j));
}
printf ("\n");
}
}


int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
float U[100][2];
float L[100][2];
int M=0, N=0, J=2, Z=2, m=0, n=0;
int p,p1,p2,p3,x1,x2,x3,y1,y2,y3,i,j,k,K1,K2;
int b[100][10],V[100][2];
float A=0, B=0, C=0,tx,ty;
float d=0, min=10000;
time_t T;
srand (time(&T));

do
{
printf("\nВведите количество точек во множестве А (не больше 100): ");
scanf ("%u", &M);
printf("\nВведите количество прямых во множестве B (не больше 100): ");
scanf ("%u", &N);
}
while (!(M<=100 && M>0 && N<=100 && N>0));
printf("\n");

rfv(&U[0][0], M, J, 2);
prt("Множество А:", &U[0][0], M, J, 2);
printf("\n");
rfv(&L[0][0], N, Z, 2);
prt("Множество B", &L[0][0], N, Z, 2);
printf("\n");



for(i=0;i<M-2;i++){
for(j=i+1;j<M-1;j++){
for(k=j+1;k<M;k++){
x1=U[i][0]; y1=U[i][1];
x2=U[j][0]; y2=U[j][1];
x3=U[k][0]; y3=U[k][1];
if(((y2-y1)*(x3-x2))!=((y3-y1)*(x2-x1))){
x1=U[i][0]; y1=U[i][1];
x2=U[j][0]; y2=U[j][1];
x3=U[k][0]; y3=U[k][1];}

K1=0;
K2=0;

for(p=1;p<N;p++){

tx=L[0][p];
ty=L[1][p];

p1=(x1-tx)*(y2-y1)-(x2-x1)*(y1-ty);
p2=(x2-tx)*(y3-y2)-(x3-x2)*(y3-ty);
p3=(x3-tx)*(y1-y3)-(x1-x3)*(y3-ty);
if(((p1>0)&&(p2>0)&&(p3>0))||((p1<0)&&(p2<0)&&(p3<0)))

K1++;
K2++;
printf("[%d][%d] [%d][%d] \n",L[p][0],L[p][1]);

if(K1=K2&&K1!=0){

V[1][1]=U[i][1];
V[1][2]=U[i][2];
V[2][1]=U[j][1];
V[2][2]=U[j][2];
V[3][1]=U[k][1];
V[3][2]=U[k][2];

V[1][1]=x1;
V[1][2]=y1;
V[2][1]=x2;
V[2][2]= y2;
V[3][1]=x3;
V[3][2]=y3;


}

}

}

}
}
if (K1==0)
printf("Treugolnik ne sodergit tochec\n");
else
printf("\nTreugolnik s vershinami [%d][%d], [%d][%d],[%d][%d].Sodergit v sebe %d,%d tochek",x1,y1,x2,y2,x3,y3,K2,K1);


getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 12:20     Даны два множества точек на плоскости. Из первого множества выбрать три различные точки так, чтобы треугольник с вершинами в этих точках содержал (ст
Посмотрите здесь:

C++ Выбрать 3 разные точки заданного на плоскости множества точек,составляющие треугольник наибольшего периметра
C++ Из заданного на плоскости множества точек выбрать три различные точки
C++ Выбрать три разные точки заданного на плоскости множества точек, составляющие треугольник наибольшего периметра
Работа С Массивами (Выбрать три различные точки из заданного множества точек на плоскости так...) C++
C++ На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы
Из заданного множества точек на плоскости выбрать три разные точки A, B, C C++
Из заданного множества точек на плоскости выбрать две различные точки так C++
Выбрать из точек множества три таких, чтобы в получившийся треугольник влезо наибольшее количество точек C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 14:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru