Advertisement
NikolaDimitroff

Problems, 31.01.2014

Jan 31st, 2014
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. // Da se proveri dali cifrite sa po-golemi ot 3 i nechetni na 5cifreno chislo
  2.  
  3. int n;
  4.     cin >> n;
  5.     int digit1 = n % 10,
  6.         digit2 = (n / 10) % 10,
  7.         digit3 = (n / 100) % 10,
  8.         digit4 = (n / 1000) % 10,
  9.         digit5 = (n / 10000) % 10;
  10.  
  11.     bool isValid =
  12.         ((digit1 % 2 == 1) && digit1 > 3) &&
  13.         ((digit2 % 2 == 1) && digit2 > 3) &&
  14.         ((digit3 % 2 == 1) && digit3 > 3) &&
  15.         ((digit4 % 2 == 1) && digit4 > 3) &&
  16.         ((digit5 % 2 == 1) && digit5 > 3);
  17.  
  18.     cout << isValid;
  19.    
  20.    
  21. /*
  22. Задача: Да се напише функция, която по подадени три променливи a, b и c - ги сортира и
  23. след извикването на функцията стойностите на трите променливи са променени така, че да
  24. са сортирани възходящо ( a < b < c) – гл. 11.
  25. */
  26. void sortAscending(int& x, int& y, int& z)
  27. {
  28.    int tempX = x,
  29.         tempY = y,
  30.         tempZ = z;
  31.  
  32.     tempX = min(x, min(y, z));
  33.     tempZ = max(x, max(y, z));
  34.     tempY = x + y + z - tempX - tempZ;
  35.  
  36.     x = tempX;
  37.     y = tempY;
  38.     z = tempZ;
  39. }
  40.  
  41. /*
  42. Задача: Да се напише функция, която като параметър приема един двумерен масив и като
  43. резултат връща сумата от всички елементи, кратни на 3 и по-малки от 100 (гл. 10).
  44. */
  45.  
  46. int sumMatrix(int* matrix, int width, int height)
  47. {
  48.     int sum = 0;
  49.  
  50.     for (int i = 0; i < width; i++)
  51.     {
  52.         for (int j = 0; j < height; j++)
  53.         {
  54.             int number = matrix[i * width + j];
  55.             if (number % 3 == 0 && number < 100)
  56.             {
  57.                 sum += number;
  58.             }
  59.         }
  60.     }
  61.     return sum;
  62. }
  63. // Recursive functions
  64.  
  65. int fibonacci(int n)
  66. {
  67.     if (n == 1 || n == 0)
  68.         return 1;
  69.  
  70.     return fibonacci(n - 1) + fibonacci(n - 2);
  71. }
  72.  
  73. int gcd(int x, int y)
  74. {
  75.     if (y == 0)
  76.         return x;
  77.  
  78.     return gcd(y, x % y);
  79. }
  80.  
  81. int ackerman(int m, int n)
  82. {
  83.     if (m == 0)
  84.         return n + 1;
  85.     if (n == 0)
  86.         return ackerman(m - 1, 1);
  87.  
  88.     return ackerman(m - 1, ackerman(m, n - 1));
  89. }
  90.  
  91. // Flood Fill (obviously)
  92.  
  93. void floodFill(int* matrix, int size, int row, int col)
  94. {
  95.     matrix[row * size + col] = 2;
  96.  
  97.     if (col < size - 1 && matrix[row * size + col + 1] == 0)
  98.         floodFill(matrix, size, row, col + 1);
  99.     if (col > 0 && matrix[row * size + col - 1] == 0)
  100.         floodFill(matrix, size, row, col - 1);
  101.     if (row < size - 1 && matrix[(row + 1)* size + col] == 0)
  102.         floodFill(matrix, size, row + 1, col);
  103.     if (row > 0 && matrix[(row - 1)* size + col] == 0)
  104.         floodFill(matrix, size, row - 1, col);
  105. }
  106.  
  107. // Умножение на матрици
  108.  
  109. void multiplyMatrix(int matrix1[][100], int matrix2[][100], int result[][100], int size)
  110. {
  111.     for (int i = 0; i < size; i++)
  112.     {
  113.         for (int j = 0; j < size; j++)
  114.         {
  115.             int sum = 0;
  116.             for (int k = 0; k < size; k++)
  117.             {
  118.                 sum +=
  119.                     matrix1[i][k] * matrix2[k][j];
  120.             }
  121.             result[i][j] = sum;
  122.         }
  123.     }
  124. }
  125.  
  126. void multiplyMatrix(int* matrix1, int* matrix2, int* result, int size)
  127. {
  128.     for (int i = 0; i < size; i++)
  129.     {
  130.         for (int j = 0; j < size; j++)
  131.         {
  132.             int sum = 0;
  133.             for (int k = 0; k < size; k++)
  134.             {
  135.                 sum +=
  136.                     matrix1[i * size + k] * matrix2[k * size + j];
  137.             }
  138.             result[i * size + j] = sum;
  139.         }
  140.     }
  141. }
  142.  
  143. // Функции с char*
  144.  
  145. char* strcat(char* x, char* y)
  146. {
  147.     int index = 0;
  148.     while (x[index] != '\0')
  149.     {
  150.         index++;
  151.     }
  152.  
  153.     int secondIndex = 0;
  154.     while (y[secondIndex] != '\0')
  155.     {
  156.         x[index + secondIndex] = y[secondIndex];
  157.         secondIndex++;
  158.     }
  159.     x[index + secondIndex] = '\0';
  160.  
  161.     return x;
  162. }
  163.  
  164. int strlen(char* text)
  165. {
  166.     int index = 0;
  167.     while (text[index] != '\0')
  168.     {
  169.         index++;
  170.     }
  171.     return index;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement