SHARE
TWEET

Untitled

a guest May 19th, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. int arr_max(int arr[], int n) {
  7.     int max = arr[0];
  8.     for (int i = 0; i < n; ++i) {
  9.         if (max < arr[i]) {
  10.             max = arr[i];
  11.         }
  12.     }
  13.     return max;
  14. }
  15.  
  16. double arr_max(double arr[], int n) {
  17.     double max = arr[0];
  18.     for (int i = 0; i < n; ++i) {
  19.         if (max < arr[i]) {
  20.             max = arr[i];
  21.         }
  22.     }
  23.     return max;
  24. }
  25.  
  26. void print_first_ariphm(int a1, int d, int N) {
  27.     int ai = a1;
  28.     for (int i = 0; i < N; ++i) {
  29.         cout << ai << endl;
  30.         ai += d;
  31.     }
  32. }
  33.  
  34. int first_greater_than_a(double a) {
  35.     int n = 1;
  36.     while (sqrt(n) <= a) {
  37.         n++;
  38.     }
  39.     return n;
  40. }
  41.  
  42. int factorial(int n) { // нерекурсивный факториал
  43.     int res = 1;
  44.     for (int i = 0; i < n; ++i) {
  45.         res *= (i + 1);
  46.     }
  47.     return res;
  48. }
  49.  
  50. int rec_factorial(int n) {
  51.     if (n == 0 || n == 1) {
  52.         return 1;
  53.     }
  54.     return rec_factorial(n - 1) * n;
  55. }
  56.  
  57. /*
  58.  * n! =
  59.  *  1) 1, если n == 0 || n == 1
  60.  *  2) (n - 1)! * n, во всех оставшихся случаях
  61.  */
  62. /*
  63.     4! = 1 * 2 * 3 * 4 = 3! * 4
  64.     5! = 1 * 2 * 3 * 4 * 5 = 4! * 5 = 3! * 4 * 5 = 2! * 3 * 4 * 5 = 1! * 2 * 3 * 4 * 5 = 1 * 2 * 3 * 4 * 5
  65. */
  66. int main() {
  67.     /*bool b;
  68.     b = true;
  69.     b = false;
  70.     int i = 0;*/
  71.     // как перевести int i в bool b?
  72.     // если i == 0 -> false
  73.     // если i != 0 -> true
  74.     /*
  75.      * Логические операторы:
  76.      * 1. Отрицание (логическое НЕ): !b. Т.е. если b == true, то !b == false. И наоборот.
  77.      * 2. Конъюнкция (логическое И): a && b. Если a == true и b == true, то a && b == true.
  78.      *          Во всех оставшихся случаях a && b == false.
  79.      * 3. Дизъюнкция (логическое ИЛИ): a || b. Если a == true или b == true, то a || b == true.
  80.      *          a || b == false, когда a == false и b == false.
  81.      * 4. Операции сравнения: >, <, ==, !=, >=, <=
  82.      *
  83.      * Логические И и ИЛИ ленивые.
  84.      * a && b:
  85.      *      Если a == false, то b даже не проверяется.
  86.      * a || b:
  87.      *      Если a == true, то b даже не проверяется.
  88.      */
  89.  
  90.     /*
  91.      * Циклы
  92.      * ЦИКЛ С ПРЕДУСЛОВИЕМ.
  93.      * while (condition) {
  94.      *      // do_smth
  95.      * }
  96.      * Пока condition == true, выполнять do_smth.
  97.      * 1. Проверяется condition
  98.      * 2. Если condition == true, выполнить do_smth и перейти на п.1.
  99.      * 3. Если condition == false, выйти из цикла.
  100.      *
  101.      * ЦИКЛ С ПОСТУСЛОВИЕМ
  102.      * do {
  103.      *      // do_smth
  104.      * } while (condition);
  105.      *
  106.      * 1. Выполнить do_smth
  107.      * 2. Проверяется condition
  108.      * 3. Если condition == true, перейти на п.1.
  109.      * 4. Если condition == false, выйти из цикла.
  110.      *
  111.      * СЧИТАЮЩИЙ ЦИКЛ, ЦИКЛ-for
  112.      * for (initialize; condition; step) {
  113.      *      // do_smth
  114.      * }
  115.      *
  116.      * 1. Выполнить initialize
  117.      * 2. Проверить condition
  118.      * 3. Если condition == false, выйти из цикла.
  119.      * 4. Выполнить do_smth
  120.      * 5. Выполнить step
  121.      * 6. Перейти на п.2.
  122.      *
  123.      * FOR через WHILE:
  124.      * initialize;
  125.      * while (condition) {
  126.      *      // do_smth
  127.      *      step;
  128.      * }
  129.      *
  130.      * DO-WHILE через WHILE:
  131.      * // do_smth
  132.      * while (condition) {
  133.      *      // do_smth
  134.      * }
  135.      *
  136.      * WHILE через FOR:
  137.      * for (;condition;) {
  138.      *      // do_smth
  139.      * }
  140.      *
  141.      *
  142.      * Управляющие операторы для цикла.
  143.      * 1. break. Как только выполняется этот оператор, выполнение
  144.      *      всего цикла прерывается. Ход программы продолжается со
  145.      *      следующего после цикла оператора.
  146.      * 2. continue. Как только выполняется этот оператор, выполнение
  147.      *      всего цикла переходит на следующую итерацию цикла с проверкой
  148.      *      всех условий (если требуется).
  149.      */
  150.     /*int number, digit;
  151.     cin >> number >> digit;
  152.     int cntr = 0;
  153.     while (number > 0) {
  154.         if (number % 10 == digit) {
  155.             cntr++;
  156.         }
  157.         number /= 10;
  158.     }
  159.     cout << cntr;*/
  160.  
  161. //    int n = 10;
  162.  
  163.     /*
  164.      * Одномерные массивы
  165.      * type array_name[array_size] - объявление массива array_name из array_size элементов типа type
  166.      * Номера элементов в массиве array_name: array_name[i], i = 0, ..., (array_size - 1).
  167.      */
  168.     /*int arr[n]; // Объявление массива
  169.     for (int i = 0; i < n; ++i) {
  170.         cin >> arr[i];
  171.     }
  172.     for (int i = 0; i < n; ++i) {
  173.         cout << arr[i] << " ";
  174.     }
  175.     cout << endl;*/
  176.  
  177. //    int m = 10;
  178. //    int arr2[n][m];
  179.     /*
  180.      * Двумерные массивы
  181.      * type array_name[rows_num][cols_num] - объявление двумерного массива array_name из
  182.      *      rows_num * cols_num элементов типа type. Тут rows_num - количество строк в матрице array_name.
  183.      *      cols_num - количество столбцов.
  184.      * Номера в элемнтов в массиве array_name: array_name[i][j], где i = 0, ..., (rows_num - 1),
  185.      *      j = 0, ..., (cols_num - 1).
  186.      */
  187. //    for (int i = 0; i < n; ++i) {
  188. //        for (int j = 0; j < m; ++j) {
  189. //            arr2[i][j] = i + j;
  190. //        }
  191. //    }
  192. //    for (int i = 0; i < n; ++i) {
  193. //        for (int j = 0; j < m; ++j) {
  194. //            cout << arr2[i][j] << "\t";
  195. //        }
  196. //        cout << endl;
  197. //    }
  198. //    int k = 10;
  199. //    int arr3[n][m][k];
  200.  
  201.     /*
  202.      * Массив не нужен:
  203.      *  1. Найти минимум, максимум, среднее арифметическое, сумму и т.д.
  204.      *  2. Определить, сколько элементов в последовательности отличается от первого.
  205.      *  3. Напечатать элементы последовательности в том порядке, в котором они были введены.
  206.      *  4. Входит ли в последовательность заданный элемент.
  207.      *  5. Обладают ли все элементы последовательности указанным свойством
  208.      *      (например, являются ли все символы цифрами).
  209.      * Массив нужен:
  210.      *  1. Для каждого элемента указать, на сколько он отличается от среднего арифметического,
  211.      *      минимума, максимума, и т.д.
  212.      *  2. Определить, сколько элементов в последовательности отличаются от последнего.
  213.      *  3. Напечатать элементы последовательности в обратном порядке. Напечатать
  214.      *      сначала положительные элементы последовательности, а затем отрицательные.
  215.      *  4. Есть ли в последовательности одинаковые элементы.
  216.      *  5. Перестановки элементов: сдвиг, перестановка по возрастанию и т.п.
  217.      */
  218.     // циклический сдвиг массива на 1 вправо
  219.     /*int n = 10;
  220.     int arr[n];
  221.     for (int i = 0; i < n; ++i) {
  222.         cin >> arr[i];
  223.     }
  224.     int tmp = arr[n - 1];
  225.     for (int i = n - 1; i >= 0; --i) {
  226.         arr[i] = arr[i - 1];
  227.     }
  228.     arr[0] = tmp;
  229.  
  230.     for (int i = 0; i < n; ++i) {
  231.         cout << arr[i] << " ";
  232.     }
  233.     cout << endl;
  234. */
  235.     // определить, есть ли в массиве одинаковые элементы
  236.     /*int n = 10;
  237.     int arr[n];
  238.     for (int i = 0; i < n; ++i) {
  239.         cin >> arr[i];
  240.     }
  241.     bool foundEqual = false;
  242.     for (int i = 0; i < n; ++i) {
  243.         for (int j = i + 1; j < n; ++j) {
  244.             if (arr[i] == arr[j]) {
  245.                 foundEqual = true;
  246.                 break;
  247.             }
  248.         }
  249.     }
  250.     if (foundEqual) {
  251.         cout << "Equal numbers are found!" << endl;
  252.     } else {
  253.         cout << "Equal numbers are not found!" << endl;
  254.     }*/
  255.  
  256.     /*
  257.      * Объявление функций
  258.      *
  259.      * return_type function_name(function_parameters) {
  260.      *      // function_body
  261.      * }, где
  262.      *      function_parameters - это список входных аргументов/параметров
  263.      *      функции, вида: либо void, т.е. пусто, либо список:
  264.      *           param1_type param1_name, param2_type param2_name, ..., paramN_type paramN_name, где
  265.      *           param1_type, param2_type, ..., paramN_type - это типы параметров, а
  266.      *           param1_name, param2_name, ..., paramN_name - это имена параметров;
  267.      *      return_type - тип возвращаемого значения. void, если функция ничего не возвращает;
  268.      *      function_name - имя функции;
  269.      *      function_body - тело функции.
  270.      * return_type function_name(function_parameters) - заголовок функции или сигнатура функции или
  271.      *      контракт функции.
  272.      *
  273.      * Вызов функций:
  274.      *
  275.      * function_name(parameters_list);
  276.      * Результат работы функции (т.е. её возвращаемое значение) может быть
  277.      * присвоен переменной соответствующего типа, например,
  278.      *      int max = arr_max(arr, N);
  279.      */
  280.  
  281.     /*int N = 10;
  282.     int arr[N];
  283.     for (int i = 0; i < N; ++i) {
  284.         cin >> arr[i];
  285.     }
  286.     int m = arr_max(arr, N);
  287.     cout << m << endl;*/
  288.  
  289.     // выписать N первых членов арифметической прогрессии
  290. /*
  291.  
  292.     int N, a1, d;
  293.     cin >> a1 >> d >> N;
  294.     print_first_ariphm(a1, d, N);
  295.  
  296. */
  297.     // task 28: Rn = sqrt(N)
  298.  
  299.     /*double a;
  300.     cin >> a;
  301.     cout << "The first element exceeding " << a << " is element on position: "
  302.         << first_greater_than_a(a) << endl;*/
  303.  
  304.     // finding maximum in array of doubles
  305.     /*int N = 10;
  306.     double arr[N];
  307.     for (int i = 0; i < N; ++i) {
  308.         cin >> arr[i];
  309.     }
  310.     double m = arr_max(arr, N);
  311.     cout << m << endl;*/
  312.     /*int n;
  313.     cin >> n;
  314.     cout << rec_factorial(n) << endl;*/
  315.     return 0;
  316. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top