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ăspunsuri la întrebare
Răspuns de
1
#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;
}
lucaciucandrei:
pai boss asta cere problema, sa afisezi punctele sortate in functie de distantele lor
Alte întrebări interesante
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă