Informatică, întrebare adresată de Ariana98, 9 ani în urmă

Î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 Utilizator anonim
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;
}

Alte întrebări interesante