Задача на сортировку на C++

Задача. На C++ реализовать ввод массива из пяти целых чисел. Вывести полученный массив. Произвести поиск минимального и максимального элементов. Провести сортировку: заменить местами только те элементы в массиве, которые лежат в диапазоне от минимального до максимального. Далее вывести полученный результат.
Решение. Реализовано на Microsoft Visual C++ 2008 Express Edition
#include <iostream>
using namespace std;

//Ввод значений в массив arr
void InputArray(int arr[])
{
cout << "Enter any 5 numbers" << endl;
for(int i = 0; i < 5; i++)
    cin >> arr[i];
}

//Вывод значений массива
void PrintArray(int arr[])
{
cout << endl;
for(int i = 0; i < 5; i++)
    cout << arr[i] <<" ";
}

//Поиск индекса минимального значения в массиве arr
int FindMin(int arr[])
{
int i_min = 0;
int min = arr[0];
for(int i = 0; i < 5; i++)
    if(arr[i] < min)
    {
        i_min = i;
        min = arr[i];
    }
return i_min;
}

//Поиск индекса максимального значения в массиве arr
int FindMax(int arr[])
{
int i_max = 0;
int max = arr[0];
for(int i = 0; i < 5; i++)
    if(arr[i] > max)
    {
        i_max = i;
        max = arr[i];
    }

return i_max;
}

//Замена местами значений в массиве arr в пределах от минимального до максимального значения
//Рассмотрены два случая
void SortArray(int a, int b, int arr[])
{
if(a < b)
{
    for (int i = a; i < b; i++)
           {
           int tmp = arr[b];
           arr[b] = arr[i];
           arr[i] = tmp;
           b--;
           }
}
if(a > b)
{
    for (int i = a; i > b; i--)
       {
       int tmp = arr[b];
       arr[b] = arr[i];
       arr[i] = tmp;
       b++;
       }
}
}

int main(){

int arr[5];

int a, b;

InputArray(arr);

PrintArray(arr);

//Искомые индексы минимального и максимального значений в массиве arr
a = FindMin(arr);
b = FindMax(arr);

SortArray(a, b, arr);

PrintArray(arr);

return 0;
}

 На выходе получаем следующее. Работает.

No comments :

Post a Comment