Răspuns :
Explicație:
#include <iostream>
#include <cmath> //utilizam o biblioteca speciala unor functii matematice, precum radicalul
using namespace std;
struct PUNCT //declaram o noua structura de date de tip punct in spatiu pentru care stim variabila depinde de 3 parametri
{
int x;
int y;
int z;
};
void citire(PUNCT pct[100], int &n) //citim datele
{
do
{
cout << "Numarul de puncte este "; //citim numarul de puncte
cin >> n;
} while (n < 10); //citirea se realizeaza pana cand n>=10, pentru a respecta cerinta din problema
for (int i = 0; i < n; i++) //pentru fiecare punct i din tabloul pct citim cele 3 coordonate (x,y,z)
{
cout << "Coordonata x a punctului " << i << " este ";
cin >> pct[i].x;
cout << "Coordonata y a punctului " << i << " este ";
cin >> pct[i].y;
cout << "Coordonata z a punctului " << i << " este ";
cin >> pct[i].z;
}
}
void calcul_distante(PUNCT pct[100], int n) //calculam distante
{
double distante[100]; //declaram un tablou distanta ce va memora distanta de la fiecare punct i din tabloul pct la origine
for (int i = 0; i < n; i++) //parcurgem de la 0 la n-1 cele n puncte
distante[i] = sqrt((pct[i].x - 0)*(pct[i].x - 0) + (pct[i].y - 0)*(pct[i].y - 0) + (pct[i].z - 0)*(pct[i].z - 0)); //calculam efectiv fiecare distanta
double min = distante[0]; //initializam o distanta minima cu prima distanta gasita si vedem daca este cea mai mica
for (int i = 1; i < n; i++) //parcurgem tabloul de puncte de la 1 (nu de la 0..pentru ca deja am presupus ca distanta minima este prima distanta calculata) la n-1 punctele
if (distante[i] < distante[0]) //testam daca avem distanta mai mica decat prima gasita
min = distante[i]; //in caz afirmativ, schimbam distanta minima
for (int i = 0; i < n; i++) //parcurgem de la 0 la n-1 cele n puncte
if (min == distante[i]) //testam daca distanta de la origine la punct este egala cu distanta minima si in caz afirmativ, scriem punctul
{
cout << "Punctul cel mai apropiat de origine este ";
cout << "(" << pct[i].x << "," << pct[i].y << "," << pct[i].z << ")" << endl;
}
}
int main() //apelam functiile folosite
{
int n;
PUNCT pct[100];
citire(pct, n);
calcul_distante(pct, n);
system("pause");
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că ați găsit conținutul oferit util și inspirațional. Dacă aveți întrebări suplimentare sau doriți asistență, vă încurajăm să ne contactați. Ne-ar face plăcere să reveniți și nu uitați să ne adăugați în lista dumneavoastră de favorite!