Advertisement
Five_NT

asdf

Nov 4th, 2015
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.11 KB | None | 0 0
  1. Vector getSquares(double a, double b, double c)
  2. {
  3.     Vector v;
  4.     v.length = 0;
  5.     double dif_max = 0, dif_min = 0;
  6.     if(a > 0 && b > 0 && c > 0)
  7.         dif_max = max(a, b, c) - min(a, b, c);
  8.     else
  9.         dif_max = min(a, b, c) - max(a, b, c);
  10.  
  11.  
  12.     unsigned int used[2] = {0};
  13.     double n = 0;
  14.  
  15.     if(max(a, b, c) == a) used[0] = 1;
  16.     else if(max(a, b, c) == b) used[1] = 1;
  17.     else if(max(a, b, c) == c) used[2] = 1;
  18.  
  19.     if(min(a, b, c) == a) used[0] = 1;
  20.     else if(min(a, b, c) == b) used[1] = 1;
  21.     else if(min(a, b, c) == c) used[2] = 1;
  22.  
  23.     if(used[0] == 0) n = a;
  24.     else if(used[1] == 0) n = b;
  25.     else if(used[2] == 0) n = c;
  26.  
  27.     if(min(a, b, c) - n > 0)
  28.         dif_min = min(a, b, c) - n;
  29.     else dif_min = n - min(a, b, c);
  30.  
  31.     unsigned int i = 1;
  32.     while(i * i >= dif_min && i * i <= dif_max)
  33.         v.values[v.length++] = i++;
  34.     return v;
  35. }
  36.  
  37. // Sa se determine toate numerele ale caror cuburi se afla intre cea mai mica si cea mai mare valoare a trei numere.
  38. Vector getCubes(double a, double b, double c)
  39. {
  40.     Vector v;
  41.     v.length = 0;
  42.     double dif_max = 0, dif_min = 0;
  43.     if(a > 0 && b > 0 && c > 0)
  44.         dif_max = max(a, b, c) - min(a, b, c);
  45.     else
  46.         dif_max = min(a, b, c) - max(a, b, c);
  47.  
  48.  
  49.     unsigned int used[2] = {0};
  50.     double n = 0;
  51.  
  52.     if(max(a, b, c) == a) used[0] = 1;
  53.     else if(max(a, b, c) == b) used[1] = 1;
  54.     else if(max(a, b, c) == c) used[2] = 1;
  55.  
  56.     if(min(a, b, c) == a) used[0] = 1;
  57.     else if(min(a, b, c) == b) used[1] = 1;
  58.     else if(min(a, b, c) == c) used[2] = 1;
  59.  
  60.     if(used[0] == 0) n = a;
  61.     else if(used[1] == 0) n = b;
  62.     else if(used[2] == 0) n = c;
  63.  
  64.     if(min(a, b, c) - n > 0)
  65.         dif_min = min(a, b, c) - n;
  66.     else dif_min = n - min(a, b, c);
  67.  
  68.     unsigned int i = 1;
  69.     while(i * i * i >= dif_min && i * i * i <= dif_max)
  70.         v.values[v.length++] = i++;
  71.     return v;
  72. }
  73.  
  74. // Sa se generalizeze subpunctul d) considerand puterea a n-a.
  75. Vector getNthRoots(double a, double b, double c, int n)
  76. {
  77.     Vector v;
  78.     v.length = 0;
  79.     double dif_max = 0, dif_min = 0;
  80.     if(a > 0 && b > 0 && c > 0)
  81.         dif_max = max(a, b, c) - min(a, b, c);
  82.     else
  83.         dif_max = min(a, b, c) - max(a, b, c);
  84.  
  85.  
  86.     unsigned int used[2] = {0};
  87.     double m = 0; // memoram aici numarul mediu(nu cel maxim, nici cel minim)
  88.  
  89.     if(max(a, b, c) == a) used[0] = 1;
  90.     else if(max(a, b, c) == b) used[1] = 1;
  91.     else if(max(a, b, c) == c) used[2] = 1;
  92.  
  93.     if(min(a, b, c) == a) used[0] = 1;
  94.     else if(min(a, b, c) == b) used[1] = 1;
  95.     else if(min(a, b, c) == c) used[2] = 1;
  96.  
  97.     if(used[0] == 0) m = a;
  98.     else if(used[1] == 0) m = b;
  99.     else if(used[2] == 0) m = c;
  100.  
  101.     if(min(a, b, c) - n > 0)
  102.         dif_min = min(a, b, c) - m;
  103.     else dif_min = m - min(a, b, c);
  104.  
  105.  
  106.     int number = 1, aux = 1;
  107.     while(aux >= dif_min && aux <= dif_max) {
  108.         number = 1;
  109.         for(int j=1; j<=n; j++)
  110.             number *= aux;
  111.         if(number >= dif_min && number <= dif_max)
  112.             v.values[v.length++] = aux;
  113.         aux ++;
  114.     }
  115.     return v;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement