se considera multimea P={p1,P2...PnÎ formata din n puncte (2<=n<=30) pe un plan euclidian .Fisierul date.in contine in prima linie numarul n care reprezinta numarul de puncte din plan pe liniile urmatoare se regasesc,coordonatele punctelor.Fiecare punct Pj este definit prin coordonatelor sale xj,yj.Elaborati un program care afiseaza la ecran coordonatelor punctelor Pa,Pb distanta dintre care este maxima.Distanta dintre punctele Pj,Pm se calculeaza cu ajutorul formulei :

Se Considera Multimea Pp1P2PnÎ Formata Din N Puncte 2ltnlt30 Pe Un Plan Euclidian Fisierul Datein Contine In Prima Linie Numarul N Care Reprezinta Numarul De Pu class=

Răspuns :

Răspuns:

#include <iostream>

#include <fstream>

#include <math.h>

using namespace std;

const int NMAX = 30;

struct punct {

   int x;

   int y;

} puncte[NMAX];

int distanta( int x1, int y1, int x2, int y2 ) {

   return ( sqrt( ( x1 - x2 ) * ( x1 - x2 ) + ( y1 - y2 ) * ( y1 - y2 ) ) );

}

int main() {

   ifstream fin( "date.in" );

   int n, i, j, maxim, x1, x2, y1, y2;

   fin >> n;

   for ( i = 0; i < n; i ++ ) {

       fin >> puncte[i].x >> puncte[i].y;

   }

   maxim = 0;

   for ( i = 0; i < n; i ++ ) {

       for ( j = i + 1; j < n; j ++ ) {

           if ( distanta( puncte[i].x, puncte[i].y, puncte[j].x, puncte[j].y ) >= maxim ) {

               maxim = distanta( puncte[i].x, puncte[i].y, puncte[j].x, puncte[j].y );

               x1 = puncte[i].x;

               x2 = puncte[j].x;

               y1 = puncte[i].y;

               y2 = puncte[j].y;

           }

       }

   }

   cout << x1 << ' ' << y1 << '\n' << x2 << ' ' << y2;

   return 0;

}

Explicație: