Advertisement
Petro_zzz

new_lesson3

Aug 22nd, 2022
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.56 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. // тут мы разбирали константные указатели и указатели на константу
  6. void constreference() {
  7.     int a = 12;
  8.     int* pa = &a;
  9.     cout << pa << " " << a
  10.         << " " << *pa << endl;
  11.     int b = 13;
  12.     *pa = b;
  13.     // a = 14;
  14.     pa = &b;
  15.     cout << pa << " " << a
  16.         << " " << *pa << endl;
  17. }
  18.  
  19. // это пример шаблона
  20. template <typename Type1, typename Type2>
  21. Type2 mult(Type1 a, Type2 b) {
  22.     return  a * b;
  23. }
  24.  
  25. // это пример перегруженных функций
  26. int mult(int a, int b) {
  27.     cout << "For int\n";   
  28.     return a * b;
  29. }
  30.  
  31. double mult(double a, double b) {
  32.     cout << "For double\n";
  33.     return a * b;
  34. }
  35.  
  36. void test_reload(){
  37.     cout << mult(2, 3) << endl;
  38.     cout << mult(2, 3.0) << endl;
  39.     cout << mult(2.0, 3.0) << endl;
  40. }
  41.  
  42. // это про линейный элемента поиск в массиве
  43. const int sz = 10;
  44. void createArr(int arr[]) {
  45.     for (int k = 0; k < sz; k++) {
  46.         arr[k] = k + 5;
  47.     }
  48. }
  49. void showArr(int arr[]) {
  50.     for (int k = 0; k < sz; k++) {
  51.         cout << arr[k] << " ";
  52.     }
  53.     cout << endl;
  54. }
  55. inline int searchArr(int arr[], int val);
  56. void searchArrs(int arr[], int arr2[], int sz2);
  57.  
  58. void test_search(){
  59.     int arr[sz];
  60.     createArr(arr);
  61.     showArr(arr);
  62.     cout << "7 at " << searchArr(arr, 7) << endl;
  63.     cout << "111 at " << searchArr(arr, 111) << endl;
  64.  
  65.     int arr2[]{5, 7, 33 , 12, 6};
  66.     searchArrs(arr, arr2, 5);
  67. }
  68.  
  69. int x = 16; // это глобальная переменная х
  70.  
  71. void fun1() {
  72.     static int counter; // это статическая переменная (память выделяется при
  73.     //первом вызове функции и освобождается после завершения работы программы)
  74.     counter++; // можно посчитать сколько раз была вызвана функция
  75.     cout << counter << endl;
  76.     int x = 23; // это локальная переменная x
  77.     cout << x << endl; // локальная
  78.     cout << ::x << endl; // глобальная
  79. }
  80.  
  81. void test_fun1(){
  82.     int x = 13; // это локальная переменная для test_fun1()
  83.     //в функции fun1() - доступа к ней нет, а к глобальному x есть.
  84.     fun1();
  85.     fun1();
  86.     fun1();
  87. }
  88.  
  89. // пример параметра по умолчанию для функции округления до знака d
  90. double my_round(double x, int d = 2) {
  91.     int mult = 1;
  92.     for (int k = 0; k < d; k++)
  93.         mult *= 10;
  94.     return (int)(x * mult) * 1.0 / mult;
  95. }
  96.  
  97. void test_round(){
  98.     double d = 13.9894541111;
  99.     printf("data: %f\n", d); // способ вывода на консоль
  100.     cout << d << " " << my_round(d, 3) << endl;
  101. }
  102.  
  103. // решение линейного уравнения
  104. double solve(double a, double b) {
  105.     return  -b/a;
  106. }
  107.  
  108. // квадратное ур-е (возвращает один из корней)
  109. double solve(double a, double b, double c, int m) {
  110.     double D = sqrt(b * b - 4 * a * c);
  111.     return (m == 1) ?
  112.         (-b + D) / (2 * a):
  113.         (-b - D) / (2 * a);
  114. }
  115.  
  116. // квадратное уравнение возвращает корни в массив параметров(передача по ссылке)
  117. int solve(double a,
  118.     double b,
  119.     double c,
  120.     double x[2])
  121. {
  122.     double D = (b * b - 4 * a * c);
  123.     if (D > 0) {
  124.         x[0] = (-b + sqrt(D)) / (2 * a);
  125.         x[1] = (-b - sqrt(D)) / (2 * a);
  126.         return 2;
  127.     } else if (D == 0) {
  128.         x[0] = (-b + sqrt(D)) / (2 * a);
  129.         x[1] = x[0];
  130.         return 1;
  131.     }
  132.     else {
  133.         return 0;
  134.     }
  135. }
  136.  
  137. void test_solve(){
  138.     double x[2];
  139.     solve(1, -8, 15, x);
  140.     cout << " " << x[0] << " " << x[1] << endl;
  141. }
  142.  
  143. // обмен значений через указатели
  144. void my_swap1(int* a, int* b) {
  145.     int tmp = *a;
  146.     *a = *b;
  147.     *b = tmp;
  148. }
  149.  
  150. // обмен значений через ссылки
  151. void my_swap(int& a, int& b) {
  152.     int tmp = a;
  153.     a = b;
  154.     b = tmp;
  155. }
  156.  
  157. void test_swap(){
  158.     int a = 3, b = 5;
  159.     cout << a << " " << b << endl;
  160.     my_swap(a, b);
  161.     cout << a << " " << b << endl;
  162. }
  163.  
  164. void main() {
  165.   //test_fun1();
  166.   //test_search();
  167.   //test_round();
  168.   //test_solve()
  169.   test_reload();  
  170.   //test_swap();
  171. }
  172.  
  173. // встраевыемые функции
  174. inline int searchArr(int arr[], int val) {
  175.     static int counter = 0;
  176.     for (int k = 0; k < sz; k++) {
  177.         counter++;
  178.         if (arr[k] == val)
  179.             return k;
  180.     }  
  181.     return -1;
  182. }
  183.  
  184. void searchArrs(int arr[], int arr2[], int sz2) {
  185.     for (int k = 0; k < sz2; k++)
  186.         cout << arr2[k] << " "
  187.         << searchArr(arr, arr2[k]) << endl;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement