Advertisement
dllbridge

Untitled

May 30th, 2023 (edited)
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.24 KB | None | 0 0
  1.  
  2. #include  <stdio.h>
  3. #include <limits.h>
  4.  
  5.  
  6. int FindMAX (int*, int*&); // Прототип int ** -> int *&
  7. int FindMAX1(int*, int**);
  8. int FindMAX2(int*, int**);
  9.  
  10.  
  11. ///////////////////////////////////////////////////
  12. int main()                                       //
  13. {
  14.     int *pai = new int[23], // int *pai[23] -> int *pai;
  15.          ai[23] = { 33, 22,  7, 99922222, 1, 334, 2, 777777, 55,
  16.                     61, 17, 72, 8,11, 34, 4, 111000222, 12,   0 },
  17.         i, cnt = FindMAX(ai, pai);
  18.  
  19.     for(i = 0; i < cnt; i++)
  20.     {
  21.         printf("  ai[%2d] = %9d  "  , i,  ai[i]);
  22.         printf("*pai[%2d] = %9d\n"  , i, pai[i]);
  23.  
  24.     }   getchar();
  25.  
  26.     delete[] pai;
  27. }
  28.  
  29.  
  30. //  Решение Влада (2023 May 30)
  31. ///////////////////////////////////////////////////
  32. int FindMAX(int* x1, int*& x2)                   //
  33. {
  34.    
  35.     int nmaxIt =       0,
  36.         size   =       0,
  37.         nmax   = INT_MAX;
  38.  
  39.     for(; x1[size] != 0; ++size);
  40.  
  41.     for(size_t   i = 0; i  != size; ++ i) {
  42.     for(size_t  xi = 0; xi != size; ++xi)
  43.        {
  44.             if(nmaxIt < x1[xi] && x1[xi] < nmax) {
  45.                nmaxIt = x1[xi];
  46.             }
  47.        }
  48.  
  49.        x2[size - 1 - i] = nmaxIt;
  50.        nmax             = nmaxIt;
  51.        nmaxIt           = 0;
  52.     }
  53.  
  54. return size;
  55. }
  56.  
  57.  
  58.  
  59.  
  60.  
  61. //  Моя версия (первоначальная)
  62. ////////////////////////////////////////////////////////////////////////////////////
  63. int FindMAX1(int* ai, int** pai)                                                  //
  64. {
  65.  
  66.  
  67.     int Max = 0,                                // максимальный элемент
  68.         *pM = 0,                                // указатель на максимальный элемент
  69.         cnt = 0;          
  70.        
  71.     while(ai[cnt])
  72.     {
  73.        
  74.        if(Max < ai[cnt]) { Max = ai[cnt]; pM = &ai[cnt]; }
  75.        
  76.        cnt ++;  
  77.     }                                                            //  Подсчитали кол-во элементов в массиве
  78.        
  79.     pai[cnt-1] = pM;
  80.        
  81.     int MM = 0, c = 0;  
  82.        
  83.        
  84.        
  85.     for(int i = cnt-2; i >= 0; i--)
  86.     {
  87.        
  88.        c = 0;
  89.        
  90.        while(ai[c])
  91.        {
  92.            
  93.             if(ai[c] < Max) {      
  94.                
  95.                if(MM < ai[c]) { MM = ai[c]; pM = &ai[c]; }
  96.                
  97.             }  c++;                        
  98.        }
  99.        
  100.        pai[i] = pM;
  101.        Max    = MM;
  102.        MM     =  0;
  103.     }  
  104.                
  105. return cnt;
  106. }
  107.  
  108.  
  109.  
  110.  
  111.  
  112. //  Версия Александра (2021 September 12)
  113. ////////////////////////////////////////////////////////////////////
  114. int FindMAX2(int* ai, int** pai)                                  //
  115. {
  116.     int i = 0,
  117.       cnt = 0;
  118.     while(ai[i])
  119.     {
  120.         cnt++;
  121.         i++;
  122.     }
  123.  
  124.     for (int i = 0; i < cnt; i++) pai[i] = &ai[i];
  125.     for (int i = 0; i < cnt; i++)
  126.     {
  127.         int *c;
  128.         for (int j = cnt-2; j >= i; j--)
  129.         {
  130.             if ( *pai[j] > *pai[j+1] )
  131.             {
  132.                 c = pai[j];
  133.                 pai[j] = pai[j+1];
  134.                 pai[j+1] = c;
  135.             }
  136.  
  137.         }
  138.     }
  139.  
  140.     return (cnt);
  141. }
  142.  
  143.  
  144.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement