Î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:
Anexe:
Răspunsuri la întrebare
Răspuns de
1
#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;
}
#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;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă