// Librerie #include #include using namespace std; // Struct e prototipi delle funzioni struct cerchio { float x, y, r; }; float getNoNeg(); float dist(float, float, float, float); bool nelCerchio(float, float, cerchio); // main int main() { // Lettura coordinate dei punti float X[10], Y[10]; cout << endl << "Inserire i punti" << endl; for ( int i = 0; i < 10; i++ ) { cout << "Punto " << (i+1) << ", inserire ascissa e ordinata: "; cin >> X[i] >> Y[i]; } // Lettura del cerchio cerchio c; cout << endl << "Inserire ascissa e ordinata del centro del cerchio: "; cin >> c.x >> c.y; cout << "Inserire il raggio non negativo del cerchio: "; c.r = getNoNeg(); // Stampa i punti nel cerchio cout << endl << "Punti nel cerchio" << endl; for ( int i = 0; i < 10; i++ ) if (nelCerchio(X[i], Y[i], c)) cout << "(" << X[i] << "," << Y[i] << ")" << endl; // Calcolo e stampa della distanza massima tra i punti nel cerchio float maxd = 0; for ( int i = 0; i < 10; i++ ) for ( int j = i; j < 10; j++ ) if (nelCerchio(X[i], Y[i], c) && nelCerchio(X[j], Y[j], c) && dist(X[i], Y[i], X[j], Y[j]) > maxd) maxd = dist(X[i], Y[i], X[j], Y[j]); cout << endl << "Distranza massima tra coppie di punti nel cerchio: " << maxd << endl; // Stampa delle coppie di punti nel cerchio a distanza massima cout << endl << "Coppie di punti nel cerchio a distanza massima" << endl; for ( int i = 0; i < 10; i++ ) for ( int j = i; j < 10; j++ ) if (nelCerchio(X[i], Y[i], c) && nelCerchio(X[j], Y[j], c) && dist(X[i], Y[i], X[j], Y[j]) == maxd) { cout << "(" << X[i] << "," << Y[i] << ")"; cout << " (" << X[j] << "," << Y[j] << ")" << endl; } return 0; } // Funzioni // Chiede e ritorna un numero necessariamente non negativo float getNoNeg() { float f; do cin >> f; while (f <= 0); return f; } // Ritorna la distanza tra due punti passati per coordinate float dist(float x, float y, float z, float k) { return sqrt((x-z)*(x-z)+(y-k)*(y-k)); } // Verifica se il punto di coordinate (x,y) sta nel cerchio c bool nelCerchio(float x, float y, cerchio c) { return dist(x, y, c.x, c.y) < c.r; }