Programowanie w języku C/C++ » FAQ

Obliczanie odległości pkt od początku układu współrzędnych

Obliczanie odległości punktów od początku układu współrzędnych,
znajdywanie największej odległości, sprawdzanie czy punkt należy
do koła o podanym promieniu.

/***********************************/
/* dbe_benio                       */
/* Obliczanie odleglosci pkt od    */
/* poczatku ukladu wspolrzednych   */
/* oraz sprawdzanie czy pkt nalezy */
/* do kola o podanym promieniu     */
/***********************************/
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
//---------------------------------------------------------------------------
#include <iostream>
#include <math.h>
 
using namespace std;
 
void wprowadz( int rozmiar, float t[], char *ptr);
void pokaz();
void oblicz();
void dlugosc();
 
int rozmiar, licznik=0;
float promien;
float *tx;
float *ty;
 
int main(int argc, char* argv[])
{
char *x = "x";
char *y = "y";
 
      cout << "Wprowadz ilosc punktow: ";
      cin >> rozmiar;
      cout << "\nWprowadz promien kola: ";
      cin >> promien;
      tx = new float[rozmiar];
      ty = new float[rozmiar];
      cout << "Wprowadzanie danych do tablicy X" << endl << endl;
      wprowadz(rozmiar, tx, x);
      cout << endl;
      cout << "Wprowadzanie danych do tablicy Y" << endl << endl;
      wprowadz(rozmiar, ty, y);
      cout << endl;
      cout << "Wspolrzedne wybranych punktow:" << endl << endl;
      pokaz();
      cout << endl;
      dlugosc();
      cout << endl;
      oblicz();
      cout << endl;
      if(licznik==1)
      cout << licznik << " punkt nalezy do kola o promieniu rownym " << promien << endl;
      else
      {
        if(licznik>4)
        cout << licznik << " punktow nalezy do kola o promieniu rownym "<< promien << endl;
        else
        cout << licznik << " punkty naleza do kola o promieniu rownym " << promien<< endl;
      } 
      cout << endl;
 
delete [] tx;
delete [] ty;
 
system("pause"); 
return 0;       
 
}
/*****************************************************/
void wprowadz(int rozmiar, float t[], char *ptr)
{
     for(int i=0 ; i<rozmiar ; i++)
     {
             cout << "Wprowadz wspolrzedna " << ptr
                  << " punktu nr: " << i+1 << endl;
             cin >> t[i];        
     }
}
/******************************************************/
void pokaz()
{
     for(int i=0; i<rozmiar; i++)
        cout << "Wspolrzedne puntu nr " << i+1 << " wynosza: " 
             << "(" << tx[i] << "," << ty[i] << ")" << endl;
}
/*****************************************************/
void oblicz()
{
float tmp=0;
for(int i=0; i<rozmiar; i++)
    {
        tmp=sqrt((tx[i]*tx[i])+(ty[i]*ty[i]));
        if(tmp<promien)
        {
        licznik++;
        cout << "Punkt o wsporzednych: (" << tx[i] << "," <<ty[i] <<")"
                << " nalezy do kola o promieniu "<< promien << endl;
        }
        else
        {
        cout <<   "Punkt o wsporzednych: (" << tx[i] << "," <<ty[i] <<")"
                << " nie nalezy do kola o promieniu "<< promien << endl;
        }
    }
}
/********************************************************/
void dlugosc()
{
float dlu=0;
float max=0;
for(int i=0; i<rozmiar; i++)
{
  dlu=sqrt((tx[i]*tx[i])+(ty[i]*ty[i]));
  cout << "Odleglosc punktu o wspolrzednych (" << tx[i] << "," <<ty[i] <<")"
         << " \nod poczatku ukladu wspolrzednych wynosi: " << dlu <<endl;
        if(dlu>max)
        max=dlu;
     }
cout << "\nNajwieksza odleglosc od poczatku ukladu wspolrzednch wynosi: " 
       << max << endl;
}
/**********************************************************/