Qrist

C++ Tasks about Dynamic arrays and functions

Jul 28th, 2020 (edited)
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 23.82 KB | None | 0 0
  1. 3.1 Գրել ծրագիր, որը մուտքում կստանա բառ (ոչ ավել քան 20 սիմվոլ), և կարտածի մուտքագրված սիմվոլների քանակը։ (դաս 9)
  2.  
  3. #include <iostream>
  4. #include <string>
  5.  
  6. int main() {
  7.  
  8.     std::string name;
  9.     std::cin >> name;
  10.     int count = 0;
  11.     for (int i = 0; i < name.size(); i++)
  12.     {
  13.         count++;
  14.     }
  15.     std::cout << count;
  16. }
  17.  
  18. 3.2 Գրել ծրագիր, որը մուտքում կստանա S1 և S2 բառերը (ոչ ավել քան 20 սիմվոլ) և կարտածի ‘YES’, եթե մուտքագրված բառերը հանդիսանում են անագրամ և ‘NO’ հակառակ դեպքում: (դաս 9)
  19.  
  20. #include <iostream>
  21.  
  22. void Bubble(char ch[], int size) {
  23.  
  24.     for (int i = 0; i < size - 1; i++)
  25.     {
  26.         bool swapped = false;
  27.         for (int j = 0; j < size - i - 1; j++)
  28.         {
  29.             if (ch[j] > ch[j + 1]) {
  30.                 std::swap(ch[j], ch[j + 1]);
  31.                 swapped = true;
  32.             }
  33.         }
  34.         if (!swapped) {
  35.             return;
  36.         }
  37.     }
  38. }
  39.  
  40. int Count(char ch[], int size) {
  41.  
  42.     int count = 0;
  43.     for (int i = 0; i < size; i++)
  44.     {
  45.         if (ch[i] == '\0') {
  46.             break;
  47.         }
  48.         count++;
  49.     }
  50.     return count;
  51. }
  52. bool is_same(char x[], char y[], int size) {
  53.  
  54.     for (int i = 0; i < size; i++)
  55.     {
  56.         if (x[i] != y[i]) {
  57.             return false;
  58.  
  59.         }
  60.     }
  61.     return true;
  62. }
  63.  
  64. int main() {
  65.  
  66.     const int size = 21;
  67.     char a[size];
  68.     char b[size];
  69.     std::cin >> a;
  70.     std::cin >> b;
  71.     int size1 = Count(a, size);
  72.     int size2 = Count(b, size);
  73.     if (size1 != size2) {
  74.         std::cout << "NO";
  75.     }
  76.     else {
  77.         Bubble(a, size1);
  78.         Bubble(b, size2);
  79.         if (is_same(a, b, size1)) {
  80.             std::cout << "YES";
  81.         }
  82.         else {
  83.             std::cout << "NO";
  84.         }
  85.     }
  86. }
  87.  
  88. 3.3 Գրել ծրագիր, որը մուտքում կստանա բառ (ոչ ավել քան 20 սիմվոլ) և կարտածի ‘YES’, եթե մուտքագրված բառը պալինդրոմ է և ‘NO’ հակառակ դեպքում: (դաս 9)
  89.  
  90. #include <iostream>
  91. #include <string>
  92.  
  93. int main() {
  94.     //char string1[20];    
  95.     int flag = 0;
  96.     std::string name;
  97.     std::cin >> name;
  98.     int length = name.size();
  99.  
  100.     for (int i = 0;i < length;i++) {
  101.         if (name[i] != name[length - i - 1]) {
  102.             flag = 1;
  103.             break;
  104.         }
  105.     }
  106.     if (flag) {
  107.         std::cout << "NO";
  108.     }
  109.     else {
  110.         std::cout << "YES";
  111.     }  
  112. }
  113.  
  114. 3.4 Գրել ծրագիր, որը մուտքում կստանա S բառը (ոչ ավել քան 20 սիմվոլ), ապա ևս մեկ C սիմվոլ։ Անհրաժեշտ է արտածել S բառում առաջին C սիմվոլից աջ ընկած ենթաբառը։ (դաս 9)
  115.  
  116. #include <iostream>
  117.  
  118. using namespace std;
  119.  
  120. int main()
  121. {
  122.     const int size = 21;
  123.     char string[size] = { 0 };
  124.     cin >> string;
  125.     int count = 0;
  126.     while (string[count] != '\0') {
  127.         count++;
  128.     }
  129.     char C;
  130.     cin >> C;
  131.     int i = 0;
  132.     while (string[i] != C) {
  133.         i++;
  134.         if (i >= count) {
  135.             break;
  136.         }
  137.     }  
  138.  
  139.     for (int j = i + 1; j < count; j++) {
  140.         cout << string[j];
  141.     }
  142. }
  143.  
  144. 3.5 Գրել ծրագիր, որը մուտքում կստանա S1 բառը (ոչ ավել քան 20 սիմվոլ), S2 բառը (ոչ ավել քան S1 բառում սիմվոլների քանակը) և կարտածի ‘YES’, եթե S2 հանդիսանում է ենթաբառ S1֊ից և ‘NO’ հակառակ դեպքում: (դաս 9)
  145.  
  146. #include <iostream>
  147.  
  148. using namespace std;
  149.  
  150. int main()
  151. {
  152.     const int size = 21;
  153.     char string[size] = { 0 };
  154.     char sub_string[size] = { 0 };
  155.     cin >> string >> sub_string;
  156.  
  157.     int count = 0;
  158.     while (string[count] != '\0') {
  159.         count++;
  160.     }
  161.     int sub_count = 0;
  162.     while (sub_string[sub_count] != 0) {
  163.         sub_count++;
  164.     }
  165.  
  166.     bool avilabale = false;
  167.     for (int i = 0; i <= count - sub_count; i++) {
  168.         if (string[i] == sub_string[0]) {
  169.             for (int j = 0; j < sub_count; j++) {
  170.                 if (string[i + j] == sub_string[j]) {
  171.                     avilabale = true;
  172.                 }
  173.                 else {
  174.                     avilabale = false;
  175.                     break;
  176.                 }
  177.             }
  178.         }
  179.         if (avilabale) {
  180.             cout << "YES";
  181.             break;
  182.         }
  183.         else {
  184.             avilabale = false;
  185.         }
  186.     }
  187.     if (!avilabale) {
  188.         cout << "NO";
  189.     }
  190. }
  191.  
  192. 3.6 Գրել ծրագիր, որը մուտքում կստանա N բնական թիվ, ապա հաջորդականություն N ամբողջ տարրերից կազմված։ Անհրաժեշտ է, որ ծրագիրը արտածի հաջորդականության զույգ տարրերի քանակը։ Խնդիրը լուծելիս օգտագործել դինամիկ զանգված։ (դաս 10)
  193.  
  194. #include <iostream>
  195.  
  196. int main() {
  197.     int n;
  198.     std::cin >> n;
  199.     int* arr = new int[n];
  200.     for (int i = 0; i < n; i++)
  201.     {
  202.         std::cin >> arr[i];
  203.     }
  204.     int count = 0;
  205.     for (int i = 0; i < n; i++)
  206.     {
  207.         if (arr[i] % 2 == 0) {
  208.             count++;
  209.         }
  210.     }
  211.     std::cout << count << " ";
  212.     delete[] arr;
  213. }
  214.  
  215. 3.7 Գրել ծրագիր, որը մուտքում կստանա N բնական թիվ, ապա հաջորդականություն N ամբողջ տարրերից կազմված։ Պահանջվում է արտածել հաջորդականության բոլոր այն տարրերը որոնք կրկնվում են։ Արտածվող թվերը միմյանցից պետք է բաժանված լինեն բացատանիշով։ Խնդիրը լուծելիս օգտագործել դինամիկ զանգված։ (դաս 10)
  216.  
  217. #include <iostream>
  218. #include <climits>
  219. using namespace std;
  220.  
  221. int main()
  222. {
  223.     int n;
  224.     cin >> n;
  225.     int* arr = new int[n];
  226.     for (int i = 0; i < n; i++) {
  227.         cin >> arr[i];
  228.     }
  229.     int* temp_arr = new int[n];
  230.     int count = 0;
  231.     for (int i = 0; i < n; i++) {
  232.         for (int j = i + 1; j < n; j++) {
  233.             if (arr[i] == arr[j]) {
  234.                 temp_arr[count] = arr[i];
  235.                 count++;
  236.                 break;
  237.             }
  238.         }
  239.     }
  240.     for (int i = 0; i < count; i++) {
  241.         bool flag = true;
  242.         for (int j = 0; j < i; j++) {
  243.             if (temp_arr[i] == temp_arr[j] && i != 0) {
  244.                 flag = false;
  245.                 break;
  246.             }
  247.         }
  248.         if (flag) {
  249.             cout << temp_arr[i] << " ";
  250.         }
  251.     }
  252.     delete[] arr;
  253.     delete[] temp_arr;
  254. }
  255.  
  256. 3.8 Գրել ծրագիր, որը մուտքում կստանա N բնական թիվ, ապա հաջորդականություն N ամբողջ տարրերից կազմված։ Պահանջվում է արտածել հաջորդականության ամենաերկար խիստ աճող անընդհատ ենթահաջորդականության տարրերի քանակը։ (դաս 10)
  257.  
  258. #include <iostream>
  259.  
  260. int main() {
  261.     int n;
  262.     std::cin >> n;
  263.     int* arr = new int[n];
  264.     for (int i = 0; i < n; i++)
  265.     {
  266.         std::cin >> arr[i];
  267.     }
  268.     int max = 1;
  269.     for (int i = 1; i < n; i++)
  270.     {
  271.         int count = 1;
  272.         while (i<n && arr[i]>arr[i - 1]) {
  273.             count++;
  274.             i++;
  275.         }
  276.         if (count > max) {
  277.             max = count;
  278.         }
  279.     }
  280.     std::cout << max;
  281.     delete[] arr;
  282.  
  283. }
  284.  
  285. 3.9 Գրել ծրագիր, որը մուտքում կստանա N բնական թիվ, ապա հաջորդականություն N ամբողջ տարրերից կազմված։ Պահանջվում է արտածել հաջորդականության յուրաքանչյուր տարրի կրկնությունների քանակը։ (դաս 10)
  286.  
  287. #include <iostream>
  288.  
  289. int main() {
  290.     int n;
  291.     std::cin >> n;
  292.     int* arr = new int[n];
  293.     for (int i = 0; i < n; i++)
  294.     {
  295.         std::cin >> arr[i];
  296.     }
  297.     for (int i = 0; i < n; i++)
  298.     {
  299.         int count = 0;
  300.         for (int j = 0; j < n; j++)
  301.         {
  302.             if (arr[i] == arr[j])
  303.             {
  304.                 count++;
  305.             }
  306.         }
  307.         std::cout << count << " ";
  308.  
  309.     }
  310.     delete[] arr;
  311. }
  312.  
  313. 3.10 Գրել ծրագիր, որը մուտքում կստանա N բնական թիվ, ապա հաջորդականություն N ամբողջ տարրերից կազմված։ Պահանջվում է արտածել հաջորդականության այն երկու տարրերը որոնց գումարն ամենամոտն է 0֊ին։ Այդպիսիք մի քանիսը լինելու դեպքում արտածել առաջինը։ (դաս 10)
  314.  
  315. #include <iostream>
  316. #include <limits>
  317.  
  318. int main() {
  319.     int n;
  320.     std::cin >> n;
  321.     int* arr = new int[n];
  322.     for (int i = 0; i < n; i++)
  323.     {
  324.         std::cin >> arr[i];
  325.     }
  326.     int min = std::numeric_limits<int>::max();
  327.     int el1 = -1;
  328.     int el2 = -1;
  329.     for (int i = 0; i < n; i++)
  330.     {
  331.         for (int j = i + 1; j < n; j++)
  332.         {
  333.             int res = arr[i] + arr[j];
  334.             if (abs(res) < abs(min)) {
  335.                 min = res;
  336.                 el1 = arr[i];
  337.                 el2 = arr[j];
  338.             }
  339.         }
  340.     }
  341.     std::cout << el1 << " " << el2;
  342.     delete[] arr;
  343. }
  344.  
  345. 3.11 Գրել ծրագիր, որը մուտքում կստանա երկու 6x6 մատրիցներ՝ տող առ տող և կարտածի այդ մատրիցների տարբերությունը։ Անհրաժեշտ է արտածել մատրիցի տարրերը տող առ տող՝ նույն տողի տարրերը բաժանելով միմյանցից բացատանիշով։ (դաս 10)
  346.  
  347. #include <iostream>
  348.  
  349. int main() {
  350.     const int n = 6;
  351.     int** arr1 = new int* [n];
  352.     for (int i = 0; i < n; i++)
  353.     {
  354.         arr1[i] = new int[n];
  355.     }
  356.     int** arr2 = new int* [n];
  357.     for (int i = 0; i < n; i++)
  358.     {
  359.         arr2[i] = new int[n];
  360.     }
  361.     for (int i = 0; i < n; i++)
  362.     {
  363.         for (int j = 0; j < n; j++)
  364.         {
  365.             std::cin >> arr1[i][j];
  366.         }
  367.     }
  368.     for (int i = 0; i < n; i++)
  369.     {
  370.         for (int j = 0; j < n; j++)
  371.         {
  372.             std::cin >> arr2[i][j];
  373.         }
  374.     }
  375.     for (int i = 0; i < n; i++)
  376.     {
  377.         for (int j = 0; j < n; j++)
  378.         {
  379.             std::cout << arr1[i][j]-arr2[i][j] << " ";
  380.         }
  381.         std::cout << "\n";
  382.     }
  383. }
  384.  
  385. 3.12 Գրել ծրագիր, որը մուտքում կստանա 5x10 մատրից՝ տող առ տող և կարտածի այդ մատրիցի տրանսպոնացված մատրիցան։ Անհրաժեշտ է արտածել մատրիցի տարրերը տող առ տող՝ նույն տողի տարրերը բաժանելով միմյանցից բացատանիշով։ (դաս 10)
  386.  
  387. #include <iostream>
  388.  
  389. int main() {
  390.     const int n = 5;
  391.     const int m = 10;
  392.     int** arr = new int* [n];
  393.     for (int i = 0; i < n; i++)
  394.     {
  395.         arr[i] = new int[m];
  396.     }
  397.     for (int i = 0; i < n; i++)
  398.     {
  399.         for (int j = 0; j < m; j++)
  400.         {
  401.             std::cin >> arr[i][j];
  402.         }
  403.     }
  404.     int** trans = new int* [m];
  405.     for (int i = 0; i < m; i++)
  406.     {
  407.         trans[i] = new int[n];
  408.     }
  409.     for (int i = 0; i < m; i++)
  410.     {
  411.         for (int j = 0; j < n; j++)
  412.         {
  413.             trans[i][j] = arr[j][i];
  414.         }
  415.     }
  416.     for (int i = 0; i < m; i++)
  417.     {
  418.         for (int j = 0; j < n; j++)
  419.         {
  420.             std::cout << trans[i][j] << " ";
  421.         }
  422.         std::cout << "\n";
  423.     }
  424.  
  425. }
  426.  
  427. 3.13 Գրել ծրագիր, որը մուտքում կստանա K (1 ≤ K ≤ 6) թիվը, ապա 6x5 մատրիցի տարրերը՝ տող առ տող։ Անհրաժեշտ է հեռացնել մատրիցից K֊րդ տողը և արտածել ստացված նոր մատրիցը։ Անհրաժեշտ է արտածել մատրիցի տարրերը տող առ տող՝ նույն տողի տարրերը բաժանելով միմյանցից բացատանիշով։ (դաս 10)
  428.  
  429. #include <iostream>
  430.  
  431. int main() {
  432.     int k;
  433.     std::cin >> k;
  434.     const int n = 6;
  435.     const int m = 5;
  436.     int** arr = new int* [n];
  437.     for (int i = 0; i < n; i++)
  438.     {
  439.         arr[i] = new int[m];
  440.     }
  441.     for (int i = 0; i < n; i++)
  442.     {
  443.         for (int j = 0; j < m; j++)
  444.         {
  445.             std::cin >> arr[i][j];
  446.         }
  447.     }
  448.     for (int i = 0; i < n; i++)
  449.     {
  450.         if (i == k - 1) {
  451.             continue;
  452.         }
  453.         for (int j = 0; j < m; j++)
  454.         {
  455.             std::cout << arr[i][j] << " ";
  456.         }
  457.         std::cout << "\n";
  458.     }
  459.    
  460. }
  461.  
  462. 3.14 Գրել ծրագիր, որը մուտքում կստանա K (1 ≤ K ≤ 5) թիվը, ապա 6x5 մատրիցի տարրերը՝ տող առ տող։ Անհրաժեշտ է հեռացնել մատրիցից K֊րդ սյունը և արտածել ստացված նոր մատրիցը։ Անհրաժեշտ է արտածել մատրիցի տարրերը տող առ տող՝ նույն տողի տարրերը բաժանելով միմյանցից բացատանիշով։ (դաս 10)
  463.  
  464. #include <iostream>
  465.  
  466. int main() {
  467.     int k;
  468.     std::cin >> k;
  469.     const int heigth = 6;
  470.     const int length = 5;
  471.     int** arr = new int* [heigth];
  472.     for (int i = 0; i < heigth; i++)
  473.     {
  474.         arr[i] = new int[length];
  475.     }
  476.     for (int i = 0; i < heigth; i++)
  477.     {
  478.         for (int j = 0; j < length; j++)
  479.         {
  480.             std::cin >> arr[i][j];
  481.         }
  482.     }
  483.     for (int i = 0; i < heigth; i++)
  484.     {
  485.         for (int j = 0; j < length; j++)
  486.         {
  487.             if (j == k - 1)
  488.                 continue;
  489.             std::cout << arr[i][j] << " ";
  490.         }
  491.         std::cout << "\n";
  492.  
  493.     }
  494.    
  495. }
  496.  
  497. 3.15 Գրել ծրագիր, որը մուտքում կստանա 6x6 մատրիցի տարրերը՝ տող առ տող։ Անհրաժեշտ է սպիրալաձև արտածել մատրիցի տարրերը սկսելով մատրիցի առաջին տարրից։ (դաս 10)
  498.  
  499.  
  500. #include <iostream>
  501.  
  502. int main() {   
  503.  
  504.     const int heigth = 6;
  505.     const int length = 6;
  506.     int** arr = new int* [heigth];
  507.     for (int i = 0; i < heigth; i++)
  508.     {
  509.         arr[i] = new int[length];
  510.     }
  511.     for (int i = 0; i < heigth; i++)
  512.     {
  513.         for (int j = 0; j < length; j++)
  514.         {
  515.             std::cin >> arr[i][j];
  516.         }
  517.     }
  518.     int row = 0;
  519.    
  520.     for (int i = 0; i < heigth/2; i++)
  521.     {
  522.         for (int j = row; j < length-row; j++)
  523.         {
  524.             std::cout << arr[row][j] << " ";
  525.         }
  526.         for (int j = row+1; j < length-row; j++)
  527.         {
  528.             std::cout << arr[j][heigth-row-1] << " ";
  529.         }
  530.         for (int j = length-1-row-1; j >=row; j--)
  531.         {
  532.             std::cout << arr[heigth-row-1][j] << " ";
  533.         }
  534.         for (int j = heigth-1-row-1; j >row; j--)
  535.         {
  536.             std::cout << arr[j][row] << " ";
  537.         }
  538.         row++;
  539.  
  540.     }
  541.    
  542. }
  543.  
  544. 3.16 Գրել ծրագիր, որը մուտքում կստանա դրական թիվ և կարտածի ‘YES՛ եթե այդ թիվը պարզ է և ‘NO’ հակառակ դեպքում։ Ստուգումը անհրաժեշտ է կատարել ֆունկցիայի միջոցով։ (դաս 11)
  545.  
  546.  
  547. #include <iostream>
  548.  
  549. void number_is_Prime_or_No(unsigned int x) {
  550.     int k = 0;
  551.     for (int j = 1; j <= x; j++)
  552.     {
  553.         if (x % j == 0) {
  554.             k++;
  555.         }
  556.     }
  557.     if (k == 2) {
  558.         std::cout << "YES";
  559.     }
  560.     else {
  561.         std::cout << "NO";
  562.     }
  563. }
  564. int main() {
  565.     unsigned int number;
  566.     std::cin >> number;
  567.     number_is_Prime_or_No(number);
  568. }
  569.  
  570. 3.17 Գրել ծրագիր, որը մուտքում կստանա դրական ամբողջ թիվ և կարտածի այդ թվի երկուական ներկայացումը։ Տասականից երկուականի անցումը իրականացնել ֆունկցիայի միջոցով։ (դաս 11)
  571.  
  572.  
  573. #include <iostream>
  574. #include <string>
  575.  
  576. std::string decimalToBinary(unsigned int n) {
  577.     std::string res;
  578.     if (n == 0) {
  579.         return "0";
  580.     }
  581.     while (n != 0) {
  582.         int num = n % 2;
  583.         char symb = num + '0';
  584.         res += symb;
  585.         n /= 2;
  586.     }
  587.     return res;
  588. }
  589.  
  590. int main() {
  591.  
  592.     unsigned int n;
  593.     std::cin >> n;
  594.     std::string binary = decimalToBinary(n);
  595.     for (int i = binary.size() - 1; i >= 0; i--)
  596.     {
  597.         std::cout << binary[i];
  598.     }
  599. }
  600.  
  601. 3.18   Գրել ֆունկցիա, որը որպես արգումենտ կստանա n բնական թիվը և կվերադարձնի n!/(n+1) արտահայտության արժեքը։ Ապա հաշվել հետևյալ արտահայտության արժեքը 1!/2 + 2!/3 + 3!/4 + 4!/5 + 5!/6 + 6!/7 + 7!/8 + 8!/9 + 9!/10 + 10!/11: Պատասխանը արտածել 5 նշի ճշտությամբ։ (դաս 11)
  602.  
  603. #include <iostream>
  604.  
  605. double Value(int n) {
  606.     double fact = 1;
  607.     for (int i = 1; i <= n; i++)
  608.     {
  609.         fact *= i;
  610.     }
  611.     return fact / (n + 1);
  612. }
  613. double Sum() {
  614.  
  615.     double sum = 0;
  616.     for (int i = 1; i <= 10; i++)
  617.     {
  618.         sum += Value(i);
  619.     }
  620.     return sum;
  621. }
  622.  
  623. int main() {
  624.     std::cout.precision(5);
  625.     std::cout << std::fixed << Sum();
  626.  
  627. }
  628.  
  629. 3.19 Պահանջվում է գրել ծրագիր, որը մուտքում կստանա A և B ամբողջ թվերը և O (+, -, *, /, %) գործողության նշանը։ Ծրագիրը որպես աշխատանքի արդյունք պետք է արտածի O գործողությունը կիրառված A և B թվերի նկատմամաբ։ Անհրաժեշտ է յուրաքանչյուր գործողության համար ստեղծել առանձին ֆունկցիա։ (դաս 11)
  630.  
  631. #include <iostream>
  632.  
  633. int add(int a, int b) {
  634.     return a + b;
  635. }
  636. int sub(int a, int b) {
  637.     return a - b;
  638. }
  639. int multy(int a, int b) {
  640.     return a * b;
  641. }
  642. int divide(int a, int b) {
  643.     return a / b;
  644. }
  645. int mod(int a, int b) {
  646.     return a % b;
  647. }
  648.  
  649. void Switch(int a, int b, char ch) {
  650.     switch (ch)
  651.     {
  652.     case '+':
  653.         std::cout << add(a, b);
  654.         break;
  655.     case '-':
  656.         std::cout << sub(a, b);
  657.         break;
  658.     case '*':
  659.         std::cout << multy(a, b);
  660.         break;
  661.     case '/':
  662.         std::cout << divide(a, b);
  663.         break;
  664.     case '%':
  665.         std::cout << mod(a, b);
  666.         break;
  667.  
  668.     default:
  669.         break;
  670.     }
  671. }
  672.  
  673. int main() {
  674.     int a, b;
  675.     char ch;
  676.     std::cin >> a >> b >> ch;
  677.     Switch(a, b, ch);
  678.  
  679. }
  680.  
  681. 3.20 Պահանջվում է գրել ծրագիր, որը մուտքում կստանա եռանկան 3 կողմերը և կարտածի դռա մակերեսը։ Խնդիրը լուծելու համար օգտվել Հերոնի բանաձևից և sqrt() ֆունկցիայից։ (դաս 11)
  682.  
  683.  
  684. #include <iostream>
  685. #include<cmath>
  686.  
  687. void Heron(double a, double b, double c) {
  688.     double d = (a + b + c) / 2;
  689.     std::cout << sqrt(d * (d - a) * (d - b) * (d - c));
  690. }
  691.  
  692.  
  693. int main() {
  694.     double a, b, c;
  695.     std::cin >> a >> b >> c;
  696.     Heron(a, b, c);
  697. }
  698.  
  699. 3.21 Գրել ծրագիր, որը մուտքում կստանա n (1 ≤ n ≤ 10) և կարտածի մուտքային թվի ֆակտորիալի և ֆիբոնաչիի հաջորդականության n֊րդ տարրի հարաբերությունը: Անհրաժեշտ է, որ թվի ֆակտորիալ հաշվելու և ֆիբոնաչիի հաջորդականության n֊րդ տարրի հաշվարկի ֆունկցիաները լինեն ռեկուրսիվ: (դաս 12)
  700.  
  701.  
  702. #include <iostream>
  703.  
  704. double fact(double n) {
  705.     if (n <= 1) {
  706.         return 1;
  707.     }
  708.     else {
  709.         return n * fact(n - 1);
  710.     }
  711.  
  712. }
  713.  
  714. double fib(double n) {
  715.  
  716.     if (n == 0) {
  717.         return 0;
  718.     }
  719.     if (n == 1) {
  720.         return 1;
  721.     }
  722.     else {
  723.         return fib(n - 1) + fib(n - 2);
  724.     }
  725. }
  726.  
  727. int main() {
  728.  
  729.     double n;
  730.     std::cin >> n;
  731.     std::cout.precision(5);
  732.     std::cout << std::fixed << fact(n) / fib(n);
  733. }
  734.  
  735. 3.22 Գրել ծրագիր, որը մուտքում կստանա երկու բնական թվեր և կարտածի դրանց ամենամեծ ընդհանուր բաժանարարը: Անհրաժեշտ է խնդիրը լուծել ռեկուրսիվ ֆունկցիայի միջոցով։ (դաս 12)
  736.  
  737.  
  738. #include<iostream>
  739. using namespace std;
  740.  
  741. int TheGreatestCommonDivisor(int a, int b) {
  742.     if (a == 0 || b == 0)
  743.         return 0;
  744.     else if (a == b)
  745.         return a;
  746.     else if (a > b)
  747.         return TheGreatestCommonDivisor(a - b, b);
  748.     else return TheGreatestCommonDivisor(a, b - a);
  749. }
  750. int main() {
  751.     int a;
  752.     std::cin >> a;
  753.     int b;
  754.     std::cin >> b;
  755.     cout << TheGreatestCommonDivisor(a, b);
  756.     return 0;
  757. }
  758.  
  759. 3.23 Գրել ծրագիր որը մուտքում տրված n ≥ 0 ամբողջ և x իրական թվերի համար գտնում է Չեբիշևի բազմանդամի n-րդ գործակիցը։ Չեբիշևի Tn(x) բազմանդամը սահմանվում է հետևյալ ձևով. (դաս 12)
  760.  
  761. T0(x) = 1
  762. T1(x) = x
  763. Tn(x) = 2 * x * Tn-1(x) - Tn-2(x), n = 2, 3, ...
  764.  
  765. #include <iostream>
  766.  
  767. double Chebishev(unsigned int n, double x) {
  768.     if (n == 0)
  769.     {
  770.         return 1;
  771.     }
  772.     if (n == 1)
  773.     {
  774.         return x;
  775.     }
  776.     else
  777.     {
  778.         return 2 * x * Chebishev(n - 1, x) - Chebishev(n - 2, x);
  779.     }
  780. }
  781. int main() {
  782.     unsigned int x;
  783.     double y;
  784.     std::cin >> x >> y;
  785.     double res = Chebishev(x, y);
  786.     std::cout.precision(5);
  787.     std::cout << std::fixed << res;
  788. }
  789.  
  790. 3.24 Տրված է Kn ռեկուրենտ հաջորդականություն, որի Ki տարրը որշվում է հետևյալ կանոններով․
  791.  
  792. Ki = i, եթե i ≤ 3
  793. Ki = 2 * Ki + 3, եթե i-ն կենտ է և i > 3
  794. Ki = 3 + Ki / 2, եթե i-ն զույգ է և i > 3
  795. Գրել ծրագիր որը մուտքում կստանա i (i ≤ 1000000000) բնական թիվը և կարտածի հաջորդականության i֊րդ տարրը: (դաս 12)
  796.  
  797. #include <iostream>
  798.  
  799. int Recursion(int i) {
  800.  
  801.     if (i <= 3) {
  802.         return i;
  803.     }
  804.     if (i % 2 == 1) {
  805.         return 2 * Recursion(i + 3);
  806.     }
  807.     else {
  808.         return 3 + Recursion(i / 2);
  809.     }
  810. }
  811.  
  812. int main() {
  813.     unsigned int n;
  814.     std::cin >> n;
  815.     std::cout << Recursion(n);
  816.  
  817. }
  818.  
  819. 3.25 Պահանջվում է գրել ծրագիր, որը մուտքում կստանա երկու 10 երկարության սորտավորված զանգված և կարտածի այդ զանգվածների միավորման արդյունքում ստացված սորտավորված զանգվածը։ (դաս 12)
  820.  
  821.  
  822. #include <iostream>
  823. using namespace std;
  824.  
  825. void Print(int arr[], int size) {
  826.     for (int i = 0; i < size; i++) {
  827.         cout << arr[i] << " ";
  828.     }
  829. }
  830. void Merge(int arr1[], int arr2[], int size) {
  831.     int* arr= new int[2 * size];
  832.     int i = 0;
  833.     int j = 0;
  834.     int k = 0;
  835.     while (i < size && j < size) {
  836.         if (arr1[i] > arr2[j]) {
  837.             arr[k] = arr2[j];
  838.             j++;
  839.         }
  840.         else {
  841.             arr[k] = arr1[i];
  842.             i++;
  843.         }
  844.         k++;
  845.     }
  846.     if (i == size) {
  847.         while (j < size) {
  848.             arr[k] = arr2[j];
  849.             j++;
  850.             k++;
  851.         }
  852.     }
  853.     else {
  854.         while (i < size) {
  855.             arr[k] = arr1[i];
  856.             i++;
  857.             k++;
  858.         }
  859.     }
  860.     Print(arr, 2 * size);
  861. }
  862. int main()
  863. {
  864.     int size = 10;
  865.     int* arr = new int[size];
  866.     for (int i = 0; i < size; i++)
  867.     {
  868.         cin >> arr[i];
  869.     }
  870.     int* arr2 = new int[size];
  871.     for (int i = 0; i < size; i++)
  872.     {
  873.         cin >> arr2[i];
  874.     }
  875.     Merge(arr, arr2, size);
  876. }
  877.  
  878. 3.26 Պահանջվում է գրել ծրագիր, որը մուտքում ստանում է N բնական թիվ, ապա հաջորդականություն N ամբողջ տարրերից կազմված։ Անհրաժեշտ է, որ ծրագիրը արտածի հաջորդականության տարրերը դասավորված նվազման կարգով։ Արտածվող թվերը միմյանցից պետք է բաժանված լինեն բացատանիշով։ Խնդիրը լուծելիս օգտագործել զանգված և merge sort ալգորիթմ։ (դաս 12)
  879.  
  880.  
  881. #include <iostream>
  882. using namespace std;
  883.  
  884. void Merge(int arr[], int l, int m, int r) {
  885.     int n1 = m - l + 1;
  886.     int* arr1 = new int[n1];
  887.     for (int i = 0; i < n1; i++) {
  888.         arr1[i] = arr[l + i];
  889.     }
  890.     int n2 = r - m;
  891.     int* arr2 = new int[n2];
  892.     for (int i = 0; i < n2; i++) {
  893.         arr2[i] = arr[m + 1 + i];
  894.     }
  895.  
  896.     int i = 0;
  897.     int j = 0;
  898.     int k = l;
  899.     while (i < n1 && j < n2) {
  900.         if (arr1[i] > arr2[j]) {
  901.             arr[k] = arr1[i];
  902.             i++;
  903.         }
  904.         else {
  905.             arr[k] = arr2[j];
  906.             j++;
  907.         }
  908.         k++;
  909.     }
  910.     while (i < n1) {
  911.         arr[k] = arr1[i];
  912.         i++;
  913.         k++;
  914.     }
  915.     while (j < n2) {
  916.         arr[k] = arr2[j];
  917.         j++;
  918.         k++;
  919.     }
  920.     delete[] arr1;
  921.     delete[] arr2;
  922. }
  923. void Sort(int arr[], int l, int r) {
  924.     if (l < r) {
  925.         int m = l + ((r - l) / 2);
  926.         Sort(arr, l, m);
  927.         Sort(arr, m + 1, r);
  928.         Merge(arr, l, m, r);
  929.     }
  930. }
  931. void Print(int arr[], int n) {
  932.     for (int i = 0; i < n; i++) {
  933.         cout << arr[i] << " ";
  934.     }
  935. }
  936.  
  937. int main()
  938. {
  939.     int n;
  940.     cin >> n;
  941.     int* arr = new int[n];
  942.     for (int i = 0; i < n; i++) {
  943.         cin >> arr[i];
  944.     }
  945.     Sort(arr, 0, n - 1);
  946.     Print(arr, n);
  947. }
  948.  
Add Comment
Please, Sign In to add comment