👤

Pe o suprafață plană sunt mai multe puncte, date prin coordonatele lor.
Elaborați un program prin intermediul căruia se vor sorta crescător în dependență de
distanța acestora de la centru axei de coordonate a sistemului cartezian.
Date de intrare. Fişierul puncte.in, care pe prima linie conține numărul de puncte
din plan, iar pe următoarele linii sunt scrise coordonatele punctelor.
Date de ieşire. La ecran se va afişa punctele sortate, fiecare coordonată de punct
fiind urmată de distanța acestuia de la centru.
ÎN C++ VA ROG



Răspuns :

#include <iostream>

#include <fstream>

#include <cmath>

using namespace std;

int main() {

int n;

float x, y, v[1001], p[2][1001];

ifstream f("puncte.in");

f>>n;

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

f>>x>>y;

p[1][i]=x;

p[2][i]=y;

v[i]=sqrt(x*x-y*y);

}

f.close();

for (int i=1; i<=n-1; i++) {

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

if (v[i]>v[j]) {

swap(p[1][i], p[1][j]);

swap(p[2][i], p[2][j]);

}

}

}

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

cout<<p[1][i]<<' '<<p[2][i]<<endl;

}

return 0;

}