În C++ și Pascal vă rog mult:

Rezolvați problema cu ajutorul metodei divide et impera:
Într-o placă dreptunghiulară cu dimensiunile N pe L sunt n puncte (2≤n≤30). Fișierul date.in conține în prima linie numărul n, care reprezintă numărul de puncte din plan pe liniile următoare se regăsesc coordonatele punctelor. Elaborați un program care afișează la ecran coordonatele punctelor Pa, Pb distanța dintre care este minimă. Distanța dintre punctele Pj , Pm se calculează cu ajutorul formulei:


În C Și Pascal Vă Rog Mult Rezolvați Problema Cu Ajutorul Metodei Divide Et Impera Întro Placă Dreptunghiulară Cu Dimensiunile N Pe L Sunt N Puncte 2n30 Fișieru class=

Răspuns :

#include <iostream.h>
#include <fstream.h>
#include <math.h>
int main()
{
int n,k,i,xi,yi,j,fi,min;
int pun[100];
int x[100];
int y[100];
float fin[100];
float dis;
int inf[100];
ifstream in("DATEIN.TXT");
i=0;
k=2;
do
{
in >> pun[i];
if (pun[0]>0);
{
k=0;
k=(pun[0] * 2)+1;
}
 i=i+1;
   }
 while (i<k);
in.close();
i=1;
xi=1;
yi=1;
do{
if (i % 2!=0)
{
x[xi]=pun[i];
xi=xi+1;
}
else
{
y[yi]=pun[i];
yi=yi+1;
}
i=i+1;
}
 while (i<k);
i=1;
j=2;
fi=1;
do
{
dis=sqrt((pow(x[i]-x[j],2))+(pow(y[i]-y[j],2)));
    fin[fi]=dis;
inf[fi]=dis;

j=j+2;
    i=i+2;
dis=0;
fi=fi+1;
}
 while (i<pun[0]+1);
fi=1;
i=10000;
while (i>1)
{
for (fi = 1; fi <= pun[0]+1; fi++)
{
if (inf[fi]==i)
{
min=0;
min=fi;
i=i-1;
}
}
i=i-1;
}
cout<<" Distanta  minima dintre punctelor Pa, Pb  este :="<<fin[min]<< endl;
system("pause");
return 0;
}