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

Cititi de la tastatura n date de tip PUNCT (n >= 10). Afisati punctul cel mai apropiat de punctul O(0,0,0).

Răspunsuri la întrebare

Răspuns de adrianalitcanu2018
1

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;

}

Alte întrebări interesante