Задача. На 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