Guest User

Untitled

a guest
Jul 21st, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. int* find_min(int*, int);
  5.  
  6. int main()
  7. {
  8.     int m,k;
  9.     cin >> m >> k;//Вводим размер массива и k
  10.     int *a = new int[m];//Создаем массив
  11.  
  12.     for(int i = 0;i<m;++i)
  13.         a[i] = rand()%10;//Забиваем рандомом
  14.     for(int i = 0;i<m;++i)
  15.         cout << a[i] << " ";//Выводим посмотреть
  16.     cout << endl;
  17.     int *p = find_min(a, m);//Получаем ссылку на нужный элемент массива
  18.  
  19.     *p = k;//Заменяем
  20.     for(int i = 0;i<m;++i)
  21.         cout << a[i] << " ";//Выводим новый массив
  22.     delete[] a;//Удаляем
  23.  
  24.     return 0;
  25. }
  26.  
  27. /** Искать будем следующим образом
  28.  * Скопируем массив
  29.  * Отсортируем новый массив
  30.  * В новом массиве будем искать первый повторяющиеся элементы
  31.  * Если нашли - запоминаем
  32.  * Если не нашли - берем минимальный(первый)
  33.  * Ищем элемент в исходном массиве
  34.  * и возвращаем ссылку на этот элемент
  35. */
  36. int* find_min(int* a, int m)
  37. {
  38.     int *p = new int[m], k;
  39.     for(int i = 0; i<m; ++i)
  40.         p[i] = a[i];
  41.     for(int i = 0;i<m; ++i)
  42.         for(int j =0; j< m-i-1; ++j)
  43.             if(p[j]>p[j+1])
  44.                 swap(p[j],p[j+1]);
  45.     int i =0;
  46.     while(i<m-1 && p[i] != p[i+1]) ++i;
  47.     if(p[i]!=p[i+1])
  48.         k = p[0];
  49.     else
  50.         k = p[i];
  51.  
  52.     delete[] p;
  53.     for(int i = 0;i<m;++i)
  54.         if(a[i] == k) return (a+i);
  55. }
Add Comment
Please, Sign In to add comment