Advertisement
PedalaVasile

Ecuatii

Feb 19th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. ifstream fin("ecuatii.in");
  8. ofstream fout("ecuatii.out");
  9.  
  10. int n;
  11.  
  12. int main()
  13. {
  14.     fin >> n;
  15.  
  16.     string s;
  17.  
  18.     while(n)
  19.     {
  20.         fin >> s;
  21.  
  22.         int eqPos = s.find('=');
  23.  
  24.  
  25.         bool areX = false;
  26.         char semn = '+';
  27.         int nr = 0;
  28.  
  29.         int X = 0, L = 0;
  30.  
  31.  
  32.         for(int i = 0; i < eqPos; i++)
  33.         {
  34.             if(s[i] == '+' || s[i] == '-')
  35.             {
  36.                 if(semn == '+')
  37.                 {
  38.                     if(areX)
  39.                     {
  40.                         if(nr == 0)
  41.                             nr = 1;
  42.  
  43.                         X += nr;
  44.                     }
  45.                     else if(nr)
  46.                         L -= nr;
  47.                 }
  48.                 else
  49.                 {
  50.                     if(areX)
  51.                     {
  52.                         if(nr == 0)
  53.                             nr = 1;
  54.  
  55.                         X -= nr;
  56.                     }
  57.                     else if(nr)
  58.                         L += nr;
  59.                 }
  60.  
  61.                 areX = false;
  62.                 semn = s[i];
  63.                 nr = 0;
  64.             }
  65.             else if(s[i] == 'x')
  66.                 areX = true;
  67.             else
  68.                 nr = nr * 10 + s[i] - 48;
  69.         }
  70.  
  71.         if(semn == '+')
  72.         {
  73.             if(areX)
  74.             {
  75.                 if(nr == 0)
  76.                     nr = 1;
  77.  
  78.                 X += nr;
  79.             }
  80.             else if(nr)
  81.                 L -= nr;
  82.         }
  83.         else
  84.         {
  85.             if(areX)
  86.             {
  87.                 if(nr == 0)
  88.                     nr = 1;
  89.  
  90.                 X -= nr;
  91.             }
  92.             else if(nr)
  93.                 L += nr;
  94.         }
  95.  
  96.         /// DUPA EGAL
  97.  
  98.         int len = s.length();
  99.  
  100.         nr = 0;
  101.         semn = '+';
  102.         areX = false;
  103.  
  104.         for(int i = eqPos + 1; i < len; i++)
  105.         {
  106.             if(s[i] == '+' || s[i] == '-')
  107.             {
  108.                 if(semn == '+')
  109.                 {
  110.                     if(areX)
  111.                     {
  112.                         if(nr == 0)
  113.                             nr = 1;
  114.  
  115.                         X -= nr;
  116.                     }
  117.                     else if(nr)
  118.                         L += nr;
  119.                 }
  120.                 else
  121.                 {
  122.                     if(areX)
  123.                     {
  124.                         if(nr == 0)
  125.                             nr = 1;
  126.  
  127.                         X += nr;
  128.                     }
  129.                     else if(nr)
  130.                         L -= nr;
  131.                 }
  132.  
  133.                 areX = false;
  134.                 semn = s[i];
  135.                 nr = 0;
  136.             }
  137.             else if(s[i] == 'x')
  138.                 areX = true;
  139.             else
  140.                 nr = nr * 10 + s[i] - 48;
  141.         }
  142.  
  143.  
  144.         if(semn == '+')
  145.         {
  146.             if(areX)
  147.             {
  148.                 if(nr == 0)
  149.                     nr = 1;
  150.  
  151.                 X -= nr;
  152.             }
  153.             else if(nr)
  154.                 L += nr;
  155.         }
  156.         else
  157.         {
  158.             if(areX)
  159.             {
  160.                 if(nr == 0)
  161.                     nr = 1;
  162.  
  163.                 X += nr;
  164.             }
  165.             else if(nr)
  166.                 L -= nr;
  167.         }
  168.  
  169.         if(X == 0 && L == 0)
  170.             fout << "infinit\n";
  171.         else if(X == 0 || L == 0)
  172.             fout << "imposibil\n";
  173.         else
  174.         {
  175.             char Semn;
  176.  
  177.             if(X > 0 && L > 0)
  178.                 Semn = '+';
  179.             else if(X < 0 && L < 0)
  180.                 Semn = '+';
  181.             else
  182.                 Semn = '-';
  183.  
  184.             X = abs(X);
  185.             L = abs(L);
  186.  
  187.             double rez = (double)(L) / (double)(X);
  188.  
  189.             if(Semn == '-')
  190.                 fout << Semn;
  191.  
  192.             fout << fixed << setprecision(4) << rez << '\n';
  193.         }
  194.         n--;
  195.     }
  196.  
  197.     fin.close();
  198.     fout.close();
  199.     return 0;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement