Advertisement
J00ker

Untitled

Oct 23rd, 2017
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. /// 1
  8. void ElementeComune() {
  9.     int n, m, frecv[2][2001] = {0}, aux;
  10.  
  11.     printf("n = "); scanf("%d", &n);
  12.     printf("m = "); scanf("%d", &m);
  13.  
  14.     printf("a[] = ");
  15.     for(int i = 1; i <= n; i++) {
  16.         scanf("%d", &aux);
  17.  
  18.         if(aux < 0) frecv[0][-aux]++;
  19.         else        frecv[1][aux]++;
  20.     }
  21.     printf("b[] = ");
  22.     for(int i = 1; i <= m; i++) {
  23.         scanf("%d", &aux);
  24.  
  25.         if(aux < 0) frecv[0][-aux]++;
  26.         else        frecv[1][aux]++;
  27.     }
  28.  
  29.     printf("Elementele comune: ");
  30.     for(int i = 2000; i > 0; i--) {
  31.         if(frecv[0][i] == 2)
  32.             printf("-%d ", i);
  33.     }
  34.     for(int i = 0; i <= 2000; i++) {
  35.         if(frecv[1][i] == 2)
  36.             printf("%d ", i);
  37.     }
  38.  
  39. }
  40.  
  41. /// 2
  42. /// A
  43.  
  44. int CautareBinara(int st, int dr, int n, int *v, int x) {
  45.     ///int m = st + (dr - st) / 2;
  46.     int m = (st + dr) / 2;
  47.  
  48.     if(v[m] == x) return m;
  49.     if((st >= dr) && (v[m] != x)) return -1;
  50.  
  51.     if(v[m] > x)       return CautareBinara(st, m-1, n, v, x);
  52.     else if(v[m] < x)  return CautareBinara(m+1, dr, n, v, x);
  53. }
  54.  
  55. void Subsir() {
  56.     int n, a[10000], aux, x, y;
  57.  
  58.     printf("n = "); scanf("%d", &n);
  59.  
  60.     printf("a[] = ");
  61.     for(int i = 0; i < n; i++)
  62.         scanf("%d", &a[i]);
  63.  
  64.     printf("x = "); scanf("%d", &x);
  65.     printf("y = "); scanf("%d", &y);
  66.  
  67.     printf("Subsir: ");
  68.     for(int i = CautareBinara(0, n, n, a, x); i < y; i++)
  69.         printf("%d ", a[i]);
  70. }
  71.  
  72. /// B
  73. void Interclasare() {
  74.     int n, m, a[10000], b[10000], c[10000], n_c;
  75.  
  76.     printf("n = "); scanf("%d", &n);
  77.     printf("a[] = ");
  78.     for(int i = 0; i < n; i++)
  79.         scanf("%d", &a[i]);
  80.  
  81.     printf("m = "); scanf("%d", &m);
  82.     printf("b[] = ");
  83.     for(int i = 0; i < m; i++)
  84.         scanf("%d", &b[i]);
  85.  
  86.     int i, j;
  87.     i = j = n_c = 0;
  88.     while(i < n && j < m) {
  89.         if(a[i] <= b[j]) c[n_c++] = a[i++];
  90.         else             c[n_c++] = b[j++];
  91.     }
  92.     while(i < n) c[n_c++] = a[i++];
  93.     while(j < m) c[n_c++] = b[j++];
  94.  
  95.     printf("c[] = ");
  96.     for(i = 0; i < n_c; i++)
  97.         printf("%d ", c[i]);
  98.  
  99. }
  100.  
  101. /// 3
  102.  
  103. void Inversare(char *cuv) {
  104.     int i = 0, j = strlen(cuv) - 1;
  105.     while(i < j) swap(cuv[i++], cuv[j--]);
  106. }
  107.  
  108. void NumereMari() {
  109.     char x[256], y[256], rez[256];
  110.     int i, j, k;
  111.     int mem = 0, s;
  112.  
  113.     printf("x = "); gets(x);
  114.     printf("y = "); gets(y);
  115.  
  116.     if(x[0] != '-' && y[0] != '-') {
  117.         int n = strlen(x) - 1;
  118.         int m = strlen(y) - 1;
  119.  
  120.         Inversare(x);
  121.         Inversare(y);
  122.  
  123.         int i = 0;
  124.         while(i < min(n, m)) {
  125.             s = x[i] + y[i] + mem - 3 * '0';
  126.             mem = s % 10;
  127.             s /= 10;
  128.             rez[i] = s +
  129.         }
  130.     }
  131. }
  132.  
  133. /// 4
  134. void Transpunere() {
  135.     int n, m, a[1000][1000];
  136.  
  137.     printf("n = "); scanf("%d", &n);
  138.     printf("m = "); scanf("%d", &m);
  139.  
  140.     for(int i = 0; i < n; i++) {
  141.         for(int j = 0; j < m; j++)
  142.             scanf("%d", &a[i][j]);
  143.     }
  144.  
  145.     for(int j = 0; j < m; j++) {
  146.         for(int i = 0; i < n; i++)
  147.             printf("%d ", a[i][j]);
  148.         printf("\n");
  149.     }
  150.  
  151. }
  152.  
  153. /// 5
  154. void Spirala() {
  155.     int n, m, a[1000][1000];
  156.  
  157.     printf("n = "); scanf("%d", &n);
  158.     printf("m = "); scanf("%d", &m);
  159.  
  160.     for(int i = 1; i <= n; i++) {
  161.         for(int j = 1; j <= m; j++)
  162.             scanf("%d", &a[i][j]);
  163.     }
  164.  
  165.     int nrAf = 0;
  166.     int i, j, diri, dirj;
  167.     diri = 0; dirj = 1;
  168.     while(nrAf != n * m) {
  169.         printf("%d ", a[i][j]);
  170.         a[i][j] = -1;
  171.         nrAf++;
  172.  
  173.         if(diri ==  1 && (i == n || a[i + diri][j + dirj] == -1)) { diri =  0; dirj = -1; }
  174.         if(diri == -1 && (i == 1 || a[i + diri][j + dirj] == -1)) { diri =  0; dirj =  1; }
  175.         if(dirj ==  1 && (j == m || a[i + diri][j + dirj] == -1)) { diri =  1; dirj =  0; }
  176.         if(dirj == -1 && (j == 1 || a[i + diri][j + dirj] == -1)) { diri = -1; dirj =  0; }
  177.         i += diri;
  178.         j += dirj;
  179.     }
  180. }
  181.  
  182. int main()
  183. {
  184.     /// MAIL: horatiu.macarau@my.fmi.unibuc.ro
  185.  
  186.     /// DE TERMINAT C
  187.     /*
  188.     ElementeComune();
  189.     Subsir();
  190.     Interclasare();
  191.     NumereMari();
  192.     Transpunere();
  193.     */
  194.  
  195.     cout << '9' + '9' - 2 * '0';
  196.  
  197.     return 0;
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement