vakho

[OOP] საკ. 2 – ბილ.1

Jun 12th, 2012
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.22 KB | None | 0 0
  1. /*
  2. 1.
  3.     დაწერეთ პროგრამის ფრაგმენტი, რომელიც reals.txt ფაილში ჩაწერილ 2000 ნამდვილ რიცხვს
  4.     განათავსებს დინამიკურ მეხსიერებაში (გამოიყენეთ new ოპერატორი), შემდეგ ფაილის რიგით
  5.     მეორე რიცხვისაგან განსხვავებულ რიცხვებს დაბეჭდავს 11 სვეტად. ჩათვალეთ, რომ ასეთი
  6.     რიცხვები ფაილში არის. (3 ქულა)
  7. */
  8. #include <iostream>
  9. #include <iomanip>
  10. #include <fstream>
  11.  
  12. #define Size 2000
  13.  
  14. using namespace std;
  15.  
  16. int main()
  17. {
  18.     double *ptr = new double[Size];
  19.     ifstream ifs("reals.txt");
  20.     for (int i = 0; i < Size; i++)
  21.         ifs >> ptr[i];
  22.     ifs.close();
  23.     for (int i = 1, int amount = 0; i < Size; i++)
  24.     {
  25.         if (ptr[1] != ptr[i])
  26.         {
  27.             cout << setw(5) << left << ptr[i] << "\t";
  28.             amount++;
  29.         }
  30.         if (amount % 11 == 0)
  31.             cout << endl;
  32.     }
  33.     cout << endl;
  34.     delete [] ptr;
  35.     ptr = NULL;
  36.     system("PAUSE");
  37.     return (0);
  38. };
  39.  
  40. /*
  41. 2.
  42.     containers.txt ფაილი შეიცავს ინფორმაციას ტვირთის გადამზიდი კონტეინერების შესახებ – თითოეულის
  43.     საიდენტიფიკაციო ნომერს (მაგალითად, 217AcTe), სიგრძეს, სიგანეს და სიმაღლეს. კონტეინერების
  44.     რაოდენობა არ აღემატება 1000 –ს. დაწერეთ პროგრამა, რომელიც little.txt ფაილში ჩაწერს ყველა
  45.     იმ კონტეინერის საიდენტიფიკაციო ნომერს და მოცულობას, რომელთა მოცულობა არ აღემატება 200 მ^2.
  46.    
  47.     ამოცანის ამოსახსნელად შექმენით კლასი Container, რომელშიც გაითვალისწინეთ თქვენი აზრის საჭირო
  48.     კლასის ფუნქციები. კლასის ობიექტისთვის გადატვირთეთ >> და << ოპერატორები. მონაცემების ფაილიდან
  49.     წასაკითხად და ფაილში ჩასაწერად შექმენით გლობალური ფუნქციები. მოთხოვნილი თვისების მქონე
  50.     კონტეინერის დასადგენად ასევე შექმენით ფუნქცია. ინფორმაცია containers.txt ფაილიდან განათავსეთ
  51.     დინამიკურ მეხსიერებაში. (6 ქულა)
  52. */
  53. #include <iostream>
  54. #include <fstream>
  55. #include <string>
  56.  
  57. #define Size 1000
  58.  
  59. using namespace std;
  60.  
  61. class Container
  62. {
  63. private:
  64.     string ID;
  65.     double Length, Width, Height;
  66. public:
  67.     Container(){};
  68.     ~Container(){};
  69.     friend istream& operator >> (istream &cin, Container &a)
  70.     {
  71.         cin >> a.ID >> a.Length >> a.Width >> a.Height;
  72.         return cin;
  73.     };
  74.     friend ostream& operator << (ostream &cout, Container &a)
  75.     {
  76.         cout << a.ID << a.Length << a.Width << a.Height;
  77.         return cout;
  78.     };
  79.     friend bool Predicate(Container &a)
  80.     {
  81.         return ( (a.Length * a.Width * a.Height) < 200 );
  82.     };
  83. };
  84.  
  85. void ReadFromFile(Container *A, ifstream &ifs)
  86. {
  87.     for (int i = 0; ifs != NULL; i++)
  88.     {
  89.         ifs >> A[i];
  90.     };
  91. };
  92.  
  93. void WriteInFile(Container *A, ofstream &ofs)
  94. {
  95.     for (int i = 0; i < Size; i++)
  96.     {
  97.         if ( Predicate(A[i]) )
  98.             ofs << A[i];
  99.     };
  100. };
  101.  
  102. int main()
  103. {
  104.     ifstream ifs("containers.txt");
  105.     Container *ptr = new Container[Size];
  106.     ReadFromFile(ptr, ifs);
  107.     ifs.close();
  108.     ofstream ofs("little.txt");// ( <= 200 )
  109.     WriteInFile(ptr, ofs);
  110.     ofs.close();
  111.     delete [] ptr;
  112.     ptr = NULL;
  113.     system("PAUSE");
  114.     return (0);
  115. };
  116.  
  117. /*
  118. 3.
  119.     შექმენით კლასი Circle მონაცემებით – წრის ცენტრის კოორდინატები და რადიუსი (ნამდვილი რიცხვები).
  120.     კლასში შემოიღეთ ფუნქციები – პარამეტრებიანი კონსტრუქტორი, დესტრუქტორი, წრის ფართობის გამოთვლის
  121.     ფუნქცია და საჭიროების მიხედვით კლასის სხვა ფუნქციები. Circle კლასის საფუძველზე შექმენით კლასი
  122.     Conus საკუთარი მონაცემით – კონუსის სიმაღლე (ნამდვილი რიცხვი). Conus კლასში შემოიღეთ ფუნქციები –
  123.     პარამეტრებიანი კონსტრუქტორი, დესტრუქტორი, კონუსის მოცულობის გამოსათვლელი ფუნქცია და საჭიროების
  124.     მიხედვით კლასის სხვა ფუნქციები.
  125.  
  126.     main -ში გააკეთეთ განაცხადი ორივე კლასის თითო–თითო ობიექტზე.
  127.     დაბეჭდეთ წრის მონაცემები და ფართობი, კონუსის მონაცემები და მოცულობა.
  128.     შემდეგ გაზარდეთ კონუსის ფუძის რადიუსი 3–ით და კლვავ დაბეჭდეთ მისი მოცულობა. (6 ქულა)
  129. */
  130. #include <iostream>
  131. #include <iomanip>
  132.  
  133. using namespace std;
  134.  
  135. class Circle
  136. {
  137. protected:
  138.     double x, y, radius;
  139. public:
  140.     Circle(double x2 = 0., double y2 = 0., double radius2 = 0.):x(x2), y(y2), radius(radius2){};
  141.     ~Circle(){};
  142.     double Area()
  143.     {
  144.         return ( 3.14 * radius * radius );
  145.     };
  146.     void PrintCircleInfo()
  147.     {
  148.         cout << setw(5) << left << x << "\t" << y << "\t" << Area() << endl;
  149.     };
  150. };
  151.  
  152. class Conus : public Circle
  153. {
  154. private:
  155.     double height;
  156. public:
  157.     Conus(double x2 = 0., double y2 = 0., double radius2 = 0., double height2 = 0.)
  158.     :Circle(x2, y2, radius2), height(height2){};
  159.     ~Conus(){};
  160.     double Volume()
  161.     {
  162.         return ( Circle::Area() * height );
  163.     };
  164.     void PrintConusInfo()
  165.     {
  166.         cout << setw(5) << left << x << "\t" << y << "\t" << Volume() << endl;
  167.     };
  168.     void SetRadius(double radius2)
  169.     {
  170.         radius = radius2;
  171.     };
  172. };
  173.  
  174. int main()
  175. {
  176.     Circle Cir(1.5, 2.5, 5.0);
  177.     Conus Con(1.2, 2.4, 3.0, 7.0);
  178.  
  179.     Cir.PrintCircleInfo();
  180.     Con.PrintConusInfo();
  181.  
  182.     Con.SetRadius(6.0);
  183.     cout << Con.Volume() << endl;
  184.     system("PAUSE");
  185.     return (0);
  186. };
Advertisement
Add Comment
Please, Sign In to add comment