Advertisement
J00ker

Untitled

Oct 9th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. /// Tema 1
  7.  
  8. void Afisare(int n, int *v) {
  9.     for(int i = 0; i < n; i++)
  10.         cout << v[i] << " ";
  11.     cout << "\n";
  12. }
  13.  
  14. void Interschimbare(int n, int *v) {
  15.     int i, j;
  16.     for(i = 0; i < n-1; i++){
  17.         for(j = i+1; j < n; j++)
  18.             if(v[i] > v[j])
  19.                 swap(v[i], v[j]);
  20.         Afisare(n, v);
  21.     }
  22. }
  23.  
  24. void BubbleSort(int n, int *v) {
  25.     int i, sch, n2;
  26.     n2 = n;
  27.     do {
  28.         sch = 0;
  29.         for(i = 0; i < n-1; i++) {
  30.             if(v[i] > v[i+1]) {
  31.                 swap(v[i], v[i+1]);
  32.                 sch = i+1;
  33.             }
  34.         }
  35.         n = sch;
  36.         Afisare(n2, v);
  37.     } while(n > 1);
  38. }
  39.  
  40. void InsertionSort(int n, int *v) {
  41.     int i, j, aux;
  42.     for(int i = 1; i < n; i++) {
  43.         aux = v[i];
  44.         j = i;
  45.         while(j > 0 && v[j-1] > aux) {
  46.             v[j] = v[j-1];
  47.             j--;
  48.         }
  49.         v[j] = aux;
  50.         Afisare(n, v);
  51.     }
  52. }
  53.  
  54. void SelectionSort(int n, int *v) {
  55.     int i, j, p;
  56.     for(i = 0; i < n; i++) {
  57.         p = i;
  58.         for(j = i; j < n; j++) {
  59.             if(v[j] < v[p])
  60.                 p = j;
  61.         }
  62.         if(i != p) swap(v[i], v[p]);
  63.         Afisare(n, v);
  64.     }
  65. }
  66.  
  67. int CautareSecv(int n, int *v, int x) {
  68.     int i;
  69.     for(i = 0; i < n; i++)
  70.         if(v[i] == x) return i;
  71.     return -1;
  72. }
  73.  
  74. int CautareBinara(int st, int dr, int n, int *v, int x) {
  75.     ///int m = st + (dr - st) / 2;
  76.     int m = (st + dr) / 2;
  77.  
  78.     if(v[m] == x) return m;
  79.     if((st >= dr) && (v[m] != x)) return -1;
  80.  
  81.     if(v[m] > x)       return CautareBinara(st, m-1, n, v, x);
  82.     else if(v[m] < x)  return CautareBinara(m+1, dr, n, v, x);
  83. }
  84.  
  85. /// Tema 2
  86.  
  87. /// Ex. 2
  88. void EliminareK(int &n, int *v, int k) {
  89.     int i, j;
  90.     for(i = 0; i < n; i++) {
  91.         if(v[i] == k) {
  92.             for(j = i; j < n-1; j++)
  93.                 v[j] = v[j + 1];
  94.             n--;
  95.             return;
  96.         }
  97.     }
  98. }
  99.  
  100. void EliminareKFull(int &n, int *v, int k) {
  101.     int i, j;
  102.     for(i = 0; i < n; i++) {
  103.         if(v[i] == k) {
  104.             for(j = i; j < n-1; j++)
  105.                 v[j] = v[j + 1];
  106.             n--;
  107.             i--;
  108.         }
  109.     }
  110. }
  111.  
  112. /// Ex. 3
  113. void InsertieK(int &n, int *v, int k, int t) {
  114.     int i, j;
  115.     //int n2 = n;
  116.     for(i = 0; i < n; i++) {
  117.         if(v[i] == k) {
  118.             for(j = n - 1; j > i; j--)
  119.                 v[j + 1] = v[j];
  120.             n = n + 1;
  121.             v[i + 1] = t;
  122.             return;
  123.         }
  124.     }
  125. }
  126.  
  127. void InsertieVector(int &n, int *v, int n_t, int *t, int k) {
  128.     int i, j, l;
  129.     int n2 = n;
  130.     for(i = 0; i < n2; i++) {
  131.         if(v[i] == k) {
  132.             for(j = n2; j > i; j--)
  133.                 v[j + n_t] = v[j];
  134.             n = n2 + n_t;
  135.  
  136.             for(l = 1; l <= n_t; l++)
  137.                 v[i + l] = t[l - 1];
  138.  
  139.             return;
  140.         }
  141.     }
  142. }
  143.  
  144. /// Ex. 4
  145. int GasireElement(int n, int *v) {
  146.     int i, mx, mn;
  147.     int ap[1000] = {0};
  148.  
  149.     mx = mn = v[0];
  150.     for(i = 0; i < n; i++) {
  151.         ap[v[i]]++;
  152.         if(mx < v[i]) mx = v[i];
  153.         if(mn > v[i]) mn = v[i];
  154.     }
  155.  
  156.     for(i = mn; i <= mx; i++)
  157.         if(ap[i] == 1)
  158.             return i;
  159.     return -1;
  160. }
  161.  
  162. /// Ex. 5
  163. /// a
  164. int PolinomA(int n, int *a, int t) {
  165.     int i;
  166.     int res = a[0];
  167.     int prod = t;
  168.     for(i = 1; i <= n; i++) {
  169.         res += a[i] * prod;
  170.         prod *= t;
  171.     }
  172.  
  173.     return res;
  174. }
  175.  
  176. void PolinomB(int n, int *a, int m, int *b, int &n_c, int *c) {
  177.     int i;
  178.     n_c = max(n, m);
  179.     for(i = 0; i < n_c; i++) {
  180.         if(i <= n) c[i] += a[i];
  181.         if(i <= m) c[i] += b[i];
  182.     }
  183. }
  184.  
  185. int main() {
  186.     int n = 11;
  187.     int v[100] = {7, 3, 5, 1, 2, 3, 9, 10, 4, 6, 8};
  188.  
  189.     Afisare(n, v);
  190.     cout << "\n";
  191.  
  192.     /*
  193.     Interschimbare(n, v);
  194.     InsertionSort(n, v);
  195.     BubbleSort(n, v);
  196.     SelectionSort(n, v);
  197.  
  198.     cout << CautareBinara(0, n-1, n, v, 5);
  199.     cout << "\n";
  200.  
  201.     EliminareK(n, v, 3);
  202.     EliminareKFull(n, v, 3);
  203.  
  204.     InsertieK(n, v, 3, 11);
  205.  
  206.     int n_t = 4;
  207.     int t[4] = {7, 0, 0, 7};
  208.     InsertieVector(n, v, n_t, t, 3);
  209.     */
  210.  
  211.     Afisare(n, v);
  212.     cout << "\n";
  213.  
  214.  
  215.     return 0;
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement