kestutis

5pamokėlė. 2 Dalelės judėjimas

Mar 12th, 2013
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.39 KB | None | 0 0
  1. #include "CDalele.h"
  2.  
  3. using namespace std;
  4. //================================================================
  5. CDalele::CDalele()
  6. {
  7.     koordinaciu_skaicius = atkarpu_skaicius = intervalas = 0;
  8.  
  9.     koordinaciu_masyvas = NULL;
  10.     atkarpu_masyvas = NULL;
  11. }
  12. //-------------------------------------------------------------------
  13. CDalele::CDalele(const char failas[])
  14. {
  15.     ifstream duomenys;
  16.     duomenys.open(failas);
  17.  
  18.     duomenys >> koordinaciu_skaicius >> intervalas;
  19.  
  20.     atkarpu_skaicius = koordinaciu_skaicius - 1;
  21.  
  22.     koordinaciu_masyvas = new KOORDINATES [koordinaciu_skaicius];
  23.     atkarpu_masyvas = new ATKARPA [atkarpu_skaicius];
  24.  
  25.     for (int i = 0; i < koordinaciu_skaicius; i++)
  26.         duomenys >> koordinaciu_masyvas[i].x >> koordinaciu_masyvas[i].y;
  27.     duomenys.close();
  28.  
  29.     for (int j = 0; j < atkarpu_skaicius; j++)
  30.         atkarpu_masyvas[j] = AtkarposSkaiciavimas(&koordinaciu_masyvas[j], &koordinaciu_masyvas[j+1]);
  31. }
  32. //-----------------------------------------------------------------------
  33. CDalele::~CDalele()
  34. {
  35.     delete [] koordinaciu_masyvas;
  36.     delete [] atkarpu_masyvas;
  37. }
  38. //======================================================================
  39. double CDalele::DidziausiasGreitis()
  40. {
  41.     int ID = 0;
  42.     for (int i = 0; i < atkarpu_skaicius; i++)
  43.         if (atkarpu_masyvas[i].daleles_greitis > atkarpu_masyvas[ID].daleles_greitis)
  44.             ID = i;
  45.  
  46.     return atkarpu_masyvas[ID].daleles_greitis;
  47. }
  48. //-----------------------------------------------------------------------
  49. double CDalele::MaziausiasGreitis()
  50. {
  51.     int ID = 0;
  52.     for (int i = 0; i < atkarpu_skaicius; i++)
  53.         if (atkarpu_masyvas[i].daleles_greitis < atkarpu_masyvas[ID].daleles_greitis)
  54.             ID = i;
  55.  
  56.     return atkarpu_masyvas[ID].daleles_greitis;
  57. }
  58. //-------------------------------------------------------------------------
  59. double CDalele::VidutinisGreitis()
  60. {
  61.     return NukeliautasAtstumas() / (intervalas*atkarpu_skaicius);
  62. }
  63. //-------------------------------------------------------------------------
  64. double CDalele::NukeliautasAtstumas()
  65. {
  66.     double visas_atstumas = 0.0;
  67.     for (int i = 0; i < atkarpu_skaicius; i++)
  68.         visas_atstumas += atkarpu_masyvas[i].ilgis;
  69.  
  70.     return visas_atstumas;
  71. }
  72. //---------------------------------------------------------------------------
  73. ATKARPA CDalele::AtkarposSkaiciavimas(KOORDINATES * koord1, KOORDINATES * koord2)
  74. {
  75.     ATKARPA atkarpa;
  76.  
  77.     atkarpa.ilgis = sqrt(pow(koord1->x - koord2->x, 2) + pow(koord1->y - koord2->y, 2));
  78.     atkarpa.daleles_greitis = atkarpa.ilgis / intervalas;
  79.  
  80.     return atkarpa;
  81. }
  82. //-----------------------------------------------------------------------------
  83. void CDalele::suvesti_rezultatus(const char failas[])
  84. {
  85.     ofstream rezultatai;
  86.     rezultatai.open(failas, ios::trunc);
  87.  
  88.     rezultatai << fixed << setprecision(2);
  89.  
  90.     rezultatai << "Maziausias greitis: " << MaziausiasGreitis() << " mm/s." << endl;
  91.     rezultatai << "Vidutinis greitis: " << VidutinisGreitis() << " mm/s." << endl;
  92.     rezultatai << "Didziausias greitis: " << DidziausiasGreitis() << " mm/s." << endl;
  93.     rezultatai << "Nukeliaustas atstumas: " << NukeliautasAtstumas() << " mm.";
  94.  
  95.     //rezultatai.close();//Nebūtina dėl to, kad čia jau pabaiga steko atminties ir klasės destruktorius automatiškai iškviečiamas.
  96.     //Bet geriau uždėti, nes dar kol kas dar neturėtum suprasti tai ką parašiau
  97. }
Advertisement
Add Comment
Please, Sign In to add comment