Informatică, întrebare adresată de Soarelealbastru, 8 ani în urmă

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 :

Anexe:

Răspunsuri la întrebare

Răspuns de ploPLO123
0

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:

Alte întrebări interesante