Advertisement
Dominik_Gubrynowicz

Untitled

Sep 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.86 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. double PrzedzialPierwszy(double &zarobki, int przedzial);
  6. double PrzedzialDrogi(double &zarobki, int przedzial);
  7. double PrzedzialTrzeci(double &zarobki, int przedzial);
  8. double PrzedzialCzwarty(double &zarobki, int przedzial);
  9.  
  10. double Oblicz(double &zarobki)
  11. {
  12.     if(zarobki<=10000)
  13.         return 0;
  14.  
  15.     if((zarobki>10000)&&(zarobki<=100000))
  16.         return PrzedzialPierwszy(zarobki, 1);
  17.  
  18.     if((zarobki>100000)&&(zarobki<=1000000))
  19.         return PrzedzialPierwszy(zarobki, 2) + PrzedzialDrogi(zarobki, 1);
  20.  
  21.     if((zarobki>1000000)&&(zarobki<=10000000))
  22.         return PrzedzialPierwszy(zarobki, 2) + PrzedzialDrogi(zarobki, 2) + PrzedzialTrzeci(zarobki, 1);
  23.  
  24.     if(zarobki>10000000)
  25.         return PrzedzialPierwszy(zarobki, 2) + PrzedzialDrogi(zarobki, 2) + PrzedzialTrzeci(zarobki, 2) + PrzedzialCzwarty(zarobki, 1);
  26.     return 0;
  27. }
  28.  
  29. double Brutto(double &zarobki)
  30. {
  31.     if(Oblicz(zarobki)==0)
  32.         return(zarobki);
  33.  
  34.     double poczatek, koniec, srodek, pom;
  35.     bool znaleziono;
  36.  
  37.     poczatek = zarobki;
  38.     koniec = zarobki*2;
  39.     znaleziono = false;
  40.  
  41.     do
  42.     {
  43.         srodek = (poczatek+koniec)/2;
  44.         pom = srodek-Oblicz(srodek);
  45.         if(pom == zarobki)
  46.             znaleziono = true;
  47.         else
  48.         {
  49.             if(srodek-Oblicz(srodek)>zarobki)
  50.                 koniec = srodek-1;
  51.             else
  52.                 poczatek = srodek+1;
  53.         }
  54.     }while(znaleziono==false);
  55.  
  56.     return srodek;
  57. }
  58.  
  59. int main()
  60. {
  61.     int i;
  62.     int ilePracownikow;
  63.     double zarobkiBrutto;
  64.     double zarobkiNetto;
  65.  
  66.     scanf("%d", &ilePracownikow);
  67.  
  68.     for(i=0; i<ilePracownikow; i++)
  69.     {
  70.         scanf("%lf", &zarobkiNetto);
  71.         zarobkiBrutto = Brutto(zarobkiNetto);
  72.         printf("%lf\n", zarobkiBrutto);
  73.     }
  74. }
  75.  
  76. double PrzedzialPierwszy(double &zarobki, int przedzial)
  77. {
  78.     double podatek;
  79.     double x;
  80.  
  81.     x = zarobki-10000;
  82.     if(przedzial==2)
  83.         x = 90000;
  84.  
  85.     podatek = log(x);
  86.     if(0 > podatek) podatek = 0;
  87.     podatek += pow(x,1.0/2);
  88.     if(x < podatek) podatek = x;
  89.  
  90.  
  91.     return podatek;
  92. }
  93.  
  94. double PrzedzialDrogi(double &zarobki, int przedzial)
  95. {
  96.     double podatek;
  97.     double x;
  98.  
  99.     x = zarobki - 100000;
  100.     if(przedzial==2)
  101.         x = 900000;
  102.  
  103.     podatek = (2*pow(x,1.0/3)) + (x/10);
  104.  
  105.     return podatek;
  106. }
  107.  
  108. double PrzedzialTrzeci(double &zarobki, int przedzial)
  109. {
  110.     double podatek;
  111.     double x;
  112.  
  113.     x = zarobki - 1000000;
  114.     if(przedzial==2)
  115.         x = 9000000;
  116.  
  117.     podatek = x*(x*x+5000);
  118.     podatek = log(podatek);
  119.     if(podatek < 0) podatek = 0;
  120.     podatek += x/2;
  121.  
  122.     return podatek;
  123. }
  124.  
  125. double PrzedzialCzwarty(double &zarobki, int przedzial)
  126. {
  127.     double podatek;
  128.     double x;
  129.  
  130.     x = zarobki - 10000000;
  131.     podatek = x/7 + pow(x, 1.0/4);
  132.  
  133.     return podatek;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement