Помогите Исправить Ошибки

  • Автор темы nike64n
  • Дата начала
N

nike64n

#1
Задание:
Выбрать три различные точки из заданного множества точек на плоскости так, чтобы была минимальной разность между количествами точек, лежащих внутри и вне треугольника с вершинами в выбранных точках.

Почему не работает? Помогите исправить ошибки, заранее благодарю.

C++:
#include <iostream>

int main(int argc, char* argv[])
{
//----------------------------------------------------------
float A[100][2];
int n;
cout << "n="; cin>>n;
for(int i=0; i<n; i++)
{for(int j=0; j<2; j++)
for(int k=0; k<4; k++)
{cout<<"["<<i<<"]"<<"["<<j<<"]"<<"["<<k<<"]="; cin>>A[i] [j] [k];}
}
//----------------------------------------------------------

float S=0, So=0, s1, s2, s3, p, p1, p2, p3, a, b, c, d, l, f;
int r=(n-3);
int v=0, w=0, x1, x2, x3, y1, y2, y3;

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

for (int i=0; i<n-2; i++)
for (int j=i+1; j<n-1; j++)
for (int k=j+1; k<n; k++)
{	v=0;
w=0;
{
a=sqrt(pow((A[i][0]-A[j][0]),2)+pow((A[i][1]-A[j][1]),2));
b=sqrt(pow((A[j][0]-A[k][0]),2)+pow((A[j][1]-A[k][1]),2));
c=sqrt(pow((A[k][0]-A[i][0]),2)+pow((A[k][1]-A[i][1]),2));

p=((a+b+c)/2);
S=sqrt(p*(p-a)*(p-b)*(p-c));


for (int z=0; z<n; z++)
{
if((z!=i)&&(z!=j)&&(z!=k))
{

d=sqrt(pow((A[i][0]-A[z][0]),2)+pow((A[i][1]-A[z][1]),2));
l=sqrt(pow((A[j][0]-A[z][0]),2)+pow((A[j][1]-A[z][1]),2));
f=sqrt(pow((A[k][0]-A[z][0]),2)+pow((A[k][1]-A[z][1]),2));

p1=((a+l+d)/2);
s1=sqrt(p1*(p1-a)*(p1-l)*(p1-d));

p2=((b+l+f)/2);
s2=sqrt(p2*(p2-b)*(p2-l)*(p2-f));

p3=((c+d+f)/2);
s3=sqrt(p3*(p3-c)*(p3-d)*(p3-f));

So=s1+s2+s3;

if(S==So) v++;
else w++;

}
}

int h=abs(v-w);
if(h<r)
{ r=h;
x1=A[i][0]; y1=A[i][1];
x2=A[j][0]; y2=A[j][1];
x3=A[k][0]; y3=A[k][1];
}
}
}

cout<<"A=("<<x1<<"; "<<y1<<")\n";
cout<<"B=("<<x2<<"; "<<y2<<")\n";
cout<<"C=("<<x3<<"; "<<y3<<")\n";
}
 
N

nike64n

#2
ругаеться на 8 и 15 строку... что делать?башка вообще не варит

C++:
#include <iostream>
#include <math.h>
int main(int argc, char* argv[])
{
//----------------------------------------------------------
float A[100][2];
int n;
cout<<"n="; cin>>n;
for(int i=0; i<n; i++)
{for(int j=0; j<2; j++)
{cout<<"["<<i<<"]"<<"["<<j<<"]="; cin>>A[i][j];}
}
//----------------------------------------------------------

float S=0, So=0, s1, s2, s3, p, p1, p2, p3, k, a, b, c, d, l, f;
int r=(n-3);
int v=0, w=0, x1, x2, x3, y1, y2, y3;

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

for (int i=0; i<n-2; i++)
for (int j=i+1; j<n-1; j++)
for (int k=j+1; k<n; k++)
{	v=0;
w=0;
{
a=sqrt(pow((A[i][0]-A[j][0]),2)+pow((A[i][1]-A[j][1]),2));
b=sqrt(pow((A[j][0]-A[k][0]),2)+pow((A[j][1]-A[k][1]),2));
c=sqrt(pow((A[k][0]-A[i][0]),2)+pow((A[k][1]-A[i][1]),2));

p=((a+b+c)/2);
S=sqrt(p*(p-a)*(p-b)*(p-c));


for (int z=0; z<n; z++)
{
if((z!=i)&&(z!=j)&&(z!=k))
{

d=sqrt(pow((A[i][0]-A[z][0]),2)+pow((A[i][1]-A[z][1]),2));
l=sqrt(pow((A[j][0]-A[z][0]),2)+pow((A[j][1]-A[z][1]),2));
f=sqrt(pow((A[k][0]-A[z][0]),2)+pow((A[k][1]-A[z][1]),2));

p1=((a+l+d)/2);
s1=sqrt(p1*(p1-a)*(p1-l)*(p1-d));

p2=((b+l+f)/2);
s2=sqrt(p2*(p2-b)*(p2-l)*(p2-f));

p3=((c+d+f)/2);
s3=sqrt(p3*(p3-c)*(p3-d)*(p3-f));

So=s1+s2+s3;

if (fabs(S-So) <= 1.0E-8) v++;
else w++;

}
}

int h=fabs(v-w);
if(h<r)
{ r=h;
x1=A[i][0]; y1=A[i][1];
x2=A[j][0]; y2=A[j][1];
x3=A[k][0]; y3=A[k][1];
}
}
}

cout<<"A=("<<x1<<"; "<<y1<<")\n";
cout<<"B=("<<x2<<"; "<<y2<<")\n";
cout<<"C=("<<x3<<"; "<<y3<<")\n";
}
 
R

rrrFer

#3
пиши конкретней.
8 строка: cout<<"n="; cin>>n; тут все верно
15 строка вообще пустая(т.е. тоже все верно).