Advertisement
SteelK

Untitled

May 23rd, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.45 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. int one_max(int *in_mas, size_t in_dlina);
  9. int one_max_recursia(int *in_mas, size_t in_dlina, int max, int i, int b, int a);
  10.  
  11. int min_rasnost_modul(int *in_mas, size_t in_dlina);
  12. int min_rasnost_modul_recursia(int *in_mas, size_t in_dlina);
  13.  
  14.  
  15. int main() {
  16.     setlocale(0, "");
  17.     int max;
  18.     int mas1[] = { 1,2,3,4,5 };
  19.     int mas2[] = { -9,8,4 };
  20.     int mas3[] = { 2,2,8,8 };
  21.     int mas4[] = {990, 61, 567891, 23, 213, 33, 29, 1000};
  22.     if (
  23.         (one_max(mas1, 5) == 4)
  24.         &&
  25.         (one_max(mas2, 3) == 1)
  26.         &&
  27.         (one_max(mas3, 4) == 2)
  28.         &&
  29.         (min_rasnost_modul(mas1, 5) == 1)
  30.         &&
  31.         (min_rasnost_modul(mas2, 3) == 1)
  32.         &&
  33.         (min_rasnost_modul(mas3, 4) == 0)
  34.         &&
  35.         (one_max_recursia(mas1, 5, max = mas1[0], 1, 0, 0) == 4)
  36.         &&
  37.         (one_max_recursia(mas2, 3, max = mas2[0], 1, 0, 0) == 1)
  38.         &&
  39.         (one_max_recursia(mas3, 4, max = mas3[0], 1, 0, 0) == 2)
  40.         &&
  41.         (min_rasnost_modul_recursia(mas1, 5) == 1)
  42.         &&
  43.         (min_rasnost_modul_recursia(mas2, 3) == 1)
  44.         &&
  45.         (min_rasnost_modul_recursia(mas3, 4) == 0)) {
  46.         cout << "Good" << endl;
  47.  
  48.         cout << "Для min_rasnost_modul и mas4 = " << min_rasnost_modul_recursia(mas4, 8) << endl;
  49.         cout << "Для min_rasnost_modul и mas4 = " << min_rasnost_modul(mas4, 8) << endl;
  50.         return 0;
  51.     }
  52.     cout << "Bad" << endl;
  53.     return 1;
  54. }
  55.  
  56.  
  57. int one_max(int *in_mas, size_t in_dlina) {
  58.     int a = 0, max = 0, b = 0;
  59.     max = in_mas[0];
  60.     for (size_t i = 1; i < (in_dlina); i++) {
  61.         a = in_mas[i];
  62.         if (a>max) {
  63.             max = a;
  64.             b = i;
  65.         }
  66.     }
  67.     return b;
  68. }
  69.  
  70.  
  71. int one_max_recursia(int *in_mas, size_t in_dlina, int max, int i, int b, int a) {
  72.     if (i < in_dlina)
  73.     {
  74.         a = in_mas[i];
  75.         if (a>max) {
  76.             max = a;
  77.             b = i;
  78.         }
  79.         return one_max_recursia(in_mas, in_dlina, max, ++i, b, a);
  80.     }
  81.     else return b;
  82. }
  83.  
  84.  
  85. int min_rasnost_modul(int *in_mas, size_t in_dlina) {
  86.     int a = 0, min = 0;
  87.     min = abs(abs(in_mas[1]) - abs(in_mas[0]));
  88.     for (size_t i = 1; i < (in_dlina - 1); i++) {
  89.         a = abs(abs(in_mas[i + 1]) - abs(in_mas[i]));
  90.         if (a<min)
  91.             min = a;
  92.     }
  93.     return min;
  94. }
  95.  
  96.  
  97. int min_rasnost_modul_recursia(int *in_mas, size_t in_dlina) {
  98.     if (in_dlina <= 1) {
  99.         return abs(abs(in_mas[1]) - abs(in_mas[0]));
  100.     }
  101.     if (abs(abs(in_mas[1]) - abs(in_mas[0]) < min_rasnost_modul_recursia(in_mas + 1, in_dlina - 1)))
  102.         return abs(abs(in_mas[1]) - abs(in_mas[0]));
  103.     return min_rasnost_modul_recursia(in_mas + 1, in_dlina - 1);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement