kestutis

2 lygis | 2 pamokėlė | 7.Paprastoji trupmena, autoriaus spr.

Dec 31st, 2013
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.07 KB | None | 0 0
  1. #include <fstream>
  2. #include <iomanip>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. //konstantos
  8. const char Dfv[] = "Duom.txt";
  9. const char Rfv[] = "Rez.txt";
  10.  
  11. //funkcijos
  12. void Prastinti (int & s, int & v);
  13. void Sveikoji_Dalis (int & a, int & s, int & v);
  14. void Suma (int a1, int s1, int v1, int a2, int s2, int v2, int & a, int & s, int & v);
  15. void Skirtumas (int a1, int s1, int v1, int a2, int s2, int v2, int & a, int & s, int & v);
  16. void Spausdinti (ofstream & fr, int a, int s, int v);
  17.  
  18. int main()
  19. {
  20.         int n;
  21.         int a1, s1, v1,         //pirma trupmena
  22.             a2, s2, v2;         //antra trupmena
  23.         int a, s, v;           //atsakymas
  24.  
  25.         ifstream fd (Dfv);
  26.         ofstream fr (Rfv);
  27.  
  28.         fd >> n;
  29.         fr << "-------------------------------------------------------" << endl;
  30.         fr << "           T1              T2               Suma         Skirtumas  " << endl;
  31.         fr << "-------------------------------------------------------" << endl;
  32.         for (int i = 1; i <= n; i++)
  33.         {
  34.             fd >> a1 >> s1 >> v1 >> a2 >> s2 >> v2;
  35.             Spausdinti (fr, a1, s1, v1);
  36.             Spausdinti (fr, a2, s2, v2);
  37.             Suma (a1, s1, v1, a2, s2, v2, a, s, v);
  38.             Spausdinti (fr, a, s, v);
  39.             Skirtumas (a1, s1, v1, a2, s2, v2, a, s, v);
  40.             Spausdinti (fr, a, s, v);
  41.             fr << endl;
  42.         }
  43.         fd.close ();
  44.         fr.close ();
  45.         return 0;
  46. }
  47. //suprastina trupmena
  48. void Prastinti (int & s, int & v)
  49. {
  50.         int x = s;
  51.         int y = v;
  52.         while ( (x != 0) && (y != 0))
  53.            if (x >= y)
  54.               x = x % y;
  55.            else
  56.               y = y % x;
  57.         int DBD = x + y;
  58.         s = s / DBD;
  59.         v = v / DBD;
  60. }
  61. //sveikosios dalies isskirimas
  62. void Sveikoji_Dalis (int & a, int & s, int & v)
  63. {
  64.         a = s / v;
  65.         s = s % v;
  66. }
  67. //sumos skaiciavimas
  68. void Suma (int a1, int s1, int v1, int a2, int s2, int v2, int & a, int & s, int & v)
  69. {
  70.         s = s1 * v2 + s2 * v1;
  71.         v = v1 * v2;
  72.         Prastinti (s, v);
  73.         if (s >= v)
  74.             Sveikoji_Dalis (a, s, v);
  75.         else
  76.             a = 0;
  77.         a += a1 + a2;
  78. }
  79. //skirtumo skaiciavimas
  80. void Skirtumas (int a1, int s1, int v1, int a2, int s2, int v2, int & a, int & s, int & v)
  81. {
  82.         int zenkl = 0;
  83.         s1 = a1 * v1 + s1;
  84.         s2 = a2 * v2 + s2;
  85.         s = s1 * v2 - s2 * v1;
  86.         v = v1 * v2;
  87.         if (s < 0)
  88.         {
  89.             zenkl = 1;
  90.             s = -s;
  91.         }
  92.         Prastinti (s, v);
  93.         if (s >= v)
  94.             Sveikoji_Dalis (a, s, v);
  95.         else
  96.             a = 0;
  97.         if (zenkl == 1)
  98.             if (a == 0)
  99.                 s = -s;
  100.             else
  101.                 a = -a;
  102. }
  103. //veiksmo atsakymo spausdinimas
  104. void Spausdinti (ofstream & fr, int a, int s, int v)
  105. {
  106.         if (a == 0)
  107.             fr << setw(6) << " ";
  108.         else
  109.             fr << setw(6) << a;
  110.         if (s != 0)
  111.             fr << setw(3) << s << " /" << setw(2) << v;
  112.         else
  113.             fr << "         ";
  114. }
Advertisement
Add Comment
Please, Sign In to add comment