Advertisement
Guest User

Untitled

a guest
Oct 15th, 2013
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.75 KB | None | 0 0
  1. Maain Funkcija
  2.  
  3. #include <iostream>
  4. #include <fstream>
  5. #include <iomanip>
  6. #include <string>
  7. #include "Figura.h"
  8. #include "FiguruKoteineris.h"
  9.  
  10. using namespace std;
  11.  
  12. const char CD[] = "Duomenys.txt";
  13. const char FR[] = "Rezultatai.txt";
  14. const int CMaxx = 100;
  15.  
  16. void Ivesti(FiguruKoteineris & fgk, const char CD[CMaxx], int & n);
  17. void Spausdinti(FiguruKoteineris & fgk, const char FR[CMaxx]);
  18. void KokiuIrKiek(FiguruKoteineris & fgk, int n, int & ap, int & tr, int & kv);
  19. void SpausdintiKokiuIrkKiek(FiguruKoteineris & fgk, int n, int ap, int tr, int kv);
  20. void MaxPerimetras(FiguruKoteineris & fgk, int n);
  21.  
  22. int main(){
  23.  
  24.     FiguruKoteineris fgk;
  25.  
  26.     int n=0;
  27.     int ap = 0; // apskaiciuoja apskritimu skaiciu
  28.     int tr = 0; // apskaiciuoja trikampiu skaiciu
  29.     int kv = 0; // apaskaiciuoja kavadratu skaiciu
  30.  
  31.     Ivesti(fgk, CD, n);
  32.     Spausdinti(fgk, FR);
  33.     KokiuIrKiek(fgk, n, ap, tr, kv);
  34.     SpausdintiKokiuIrkKiek(fgk, n, ap, tr, kv);
  35.     MaxPerimetras(fgk, n);
  36.  
  37.    
  38.    
  39.  
  40.     system("pause");
  41.     return 0;
  42. }
  43. void Ivesti(FiguruKoteineris & fgk, const char CD[CMaxx], int & n){
  44.     double x, y, s;
  45.     string pavadinimas;
  46.     string appav, trpav, ktpav;
  47.     Figura f;
  48.     ifstream fd(CD);
  49.    
  50.     while(!fd.eof()){
  51.         fd >> pavadinimas >> n;
  52.         f.Tikrinimas(n);
  53.         f.DetiPav(pavadinimas);
  54.         f.DetiN(n);
  55.         if(n==3){
  56.             f.Tikrinimas(n);
  57.             fd >> x >> y >> s;
  58.             f.DetiKordAp(0, x, y, s);
  59.         }else
  60.         for(int i=0; i<n/2; i++){
  61.             fd >> x >> y;
  62.             f.DetiKord(i, x, y);
  63.         }
  64.             fgk.Deti(f);
  65.     }
  66.     fd.close();
  67. }
  68. void Spausdinti(FiguruKoteineris & fgk, const char FR[CMaxx]){
  69.     ofstream fr(FR);
  70.  
  71.     for(int i=0; i<fgk.Imti(); i++){
  72.         Figura f=fgk.Imti(i);
  73.         fr << f.Spausdinti() << endl;
  74.     }
  75.     fr.close();
  76. }
  77. // 1 uzduotis
  78. void KokiuIrKiek(FiguruKoteineris & fgk, int n, int & ap, int & tr, int & kv){
  79.     for(int i=1; i<=n; i++){
  80.         if(i==3){
  81.             ap++;
  82.         }else if(i==4){
  83.             kv++;
  84.         }else if(i==6){
  85.             tr++;
  86.         }
  87.     }
  88. }
  89. void SpausdintiKokiuIrkKiek(FiguruKoteineris & fgk, int n, int ap, int tr, int kv){
  90.     ofstream fr(FR, ios::app);
  91.     Figura f;
  92.     fr << endl;
  93.     fr << f.Tikrinimas(3) << " " << ap << endl;
  94.     fr << f.Tikrinimas(6) << " " << tr << endl;
  95.     fr << f.Tikrinimas(8) << " " << kv << endl;
  96.     fr.close();
  97. }
  98. // 2 uzduotis // Kazkas negerai su sita finkcija
  99. void MaxPerimetras(FiguruKoteineris & fgk, int n){
  100.     Figura f;
  101.     double trper = 0;
  102.     double kvper = 0;
  103.     double PI = 3.141592653589793238462;
  104.     double maxPerimetras = 0.0;
  105.  
  106.     for (int i=0; i < fgk.Imti(); i++){ // fgk.Imti() suka cikla iki 3
  107.         for(int j = 0; j < n/2; j++){
  108.             fgk.Imti(i).Krastines(j);
  109.             cout << fgk.Imti(i).Perimetras(j) << endl;
  110.         }
  111.     }
  112. }
  113.  
  114. Figura.h failas
  115.  
  116. #include <string>
  117. using namespace std;
  118. #pragma once
  119. class Figura{
  120. public:
  121.     static const int CMax = 100;
  122. private:
  123.     string pavadinimas;
  124.     double xkoordinate[CMax];
  125.     double ykoordinate[CMax];
  126.     double spindulys;
  127.     double perimetras;
  128.     double plotas;
  129.     double izambine;
  130.     double krastine[CMax];
  131.     int n; // nusako kiek bus koordinaciu
  132. public:
  133.     // Konstruktorius
  134.     Figura(): pavadinimas(""), n(0){}
  135.     Figura(string pavadinimas, int n):
  136.         pavadinimas(pavadinimas), spindulys(spindulys), n(n) {}
  137.     Figura(string pavadinimas, double spindulys, int n):
  138.         pavadinimas(pavadinimas), spindulys(0.0), n(0){}
  139.     //
  140.     void DetiPav(string pa) {pavadinimas = pa;}
  141.     void DetiN(int nn) { n = nn;} // negalima rasyti n=n!, nes kompiliatorius nezino kam priskirti
  142.     void DetiKordAp(int i, double x, double y, double s) {xkoordinate[i] = x; ykoordinate[i] = y; spindulys = s;}
  143.     void DetiKord(int i, double x, double y) {xkoordinate[i] = x; ykoordinate[i] = y;}
  144.    
  145.     string Spausdinti();
  146.     string Tikrinimas(int n);
  147.     double Krastines(int v);
  148.     double Perimetras(int j);
  149. };
  150.  
  151. Figura.cpp
  152.  
  153. #pragma once
  154. #include "Figura.h"
  155. #include <sstream>
  156. #include <iomanip>
  157. #include <cmath>
  158. #include <iostream>
  159. #include <string>
  160. #include <cmath>
  161. using namespace std;
  162. string Figura::Tikrinimas (int n){
  163.     string pavadinimasfig;
  164.         if(n==3){
  165.             pavadinimasfig = " Apskritimas";
  166.         }else if(n == 6){
  167.             pavadinimasfig = " Trikampis";
  168.         }else if(n==8){
  169.             pavadinimasfig = " Keturkampis";
  170.         }else
  171.             pavadinimasfig = " Nezinoma figura";
  172.         return pavadinimasfig;
  173. }
  174. string Figura::Spausdinti(){
  175.     stringstream srautas;
  176.     srautas << " " << pavadinimas << " ";
  177.     if(n==3){
  178.         srautas << setw(6) << xkoordinate[0]
  179.         << setw(5) << ykoordinate[0] << setw(7) << spindulys;
  180.         return srautas.str();
  181.     }else
  182.     for(int i=0; i<n/2; i++){
  183.      srautas << setw(2) << xkoordinate[i] << setw(5) << ykoordinate[i];
  184.     }
  185. return srautas.str();
  186. }
  187.  
  188. double Figura::Krastines(int v){
  189.  
  190.     double skper = 0.0;
  191.  
  192.     if((this->n/2 == 4 || this->n/2 == 3) && (v < this->n / 2 && n >= 0)){
  193.         int a;
  194.         if(v + 1 == this->n / 2){
  195.             a = 0;
  196.         }else{
  197.             a = v + 1;
  198.         }
  199.         return sqrt(pow(xkoordinate[v] - xkoordinate[a], 2) + pow(ykoordinate[v] - ykoordinate[a], 2));
  200.     }/*else{
  201.         if((this->n == 3) && (v-1 < this->n && n > 0)){
  202.             double PI = 3.141592653589793238462;
  203.             skper = 2 * PI * spindulys;
  204.             return skper;
  205.             */
  206.         //}
  207.     //}
  208.     return 0;
  209. }
  210. double Figura::Perimetras(int j){
  211.     int i=0;
  212.     double trper = 0.0;
  213.     double kvper = 0.0;
  214.     double skper = 0.0;
  215.     double PI = 3.141592653589793238462;
  216.     if(n==3){
  217.         skper = 2 * PI * spindulys;
  218.         return skper;
  219.     }
  220.     if(n==6){
  221.         while(i<n/2){
  222.         trper = trper + krastine[i];
  223.         i++;
  224.         }
  225.         return trper;
  226.     }else if(n==8){
  227.         while(i<n/2){
  228.         kvper = kvper + krastine[i];
  229.         i++;
  230.         }
  231.         return kvper;
  232.     }
  233. }
  234.  
  235. FiguruKoteineris.h
  236.  
  237. #include "Figura.h"
  238. using namespace std;
  239.  
  240. class FiguruKoteineris{
  241. public:
  242.     static const int CMaxi = 100;
  243. private:
  244.     Figura Figuros[CMaxi];
  245.     int n; // figuru skaicius
  246. public:
  247.     // konstruktorius
  248.     FiguruKoteineris():n(0) {}
  249.     //
  250.     Figura Imti(int i) { return Figuros[i]; }
  251.     int Imti(){ return n; }
  252.     void Deti(Figura fgk) {Figuros[n++] = fgk;}
  253. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement