Цель: Научиться реализовывать и использовать перегруженные функции.
Блок-схема:
Код программы:
// Функции вывода на экран
#include <iostream>
using namespace std;
// Размер массивов
const int size = 10;
// Перегруженная функция sort - сортировка массивов целых чисел
void sort(int n, int *arr)
{
// Алгоритм сортировки методом выбора
// Внешний цикл перебирает элементы массива
for (int i = 0; i < n-1; i++)
{
// Внутренний цикл ищет минимальный элемент на текущем шаге
int i_min = i;
for (int j = i+1; j < n; j++)
{
if (arr[j] < arr[i_min]) i_min = j;
}
// Обмен текущего элемента с минимальным
if (i_min!= i)
{
int temp = arr[i];
arr[i] = arr[i_min];
arr[i_min] = temp;
}
}
}
// Перегруженная функция sort - сортировка массивов вещественных чисел
void sort(int n, double *arr)
{
for (int i = 0; i < n-1; i++)
{
int i_min = i;
for (int j = i+1; j < n; j++)
{
if (arr[j] < arr[i_min]) i_min = j;
}
if (i_min!= i)
{
double temp = arr[i];
arr[i] = arr[i_min];
arr[i_min] = temp;
}
}
}
int main()
{
// 2 статических массива - цедлочисленный и вещественный
int arr_int[size];
double arr_double[size];
// Заполняем массивы случайными числами в диапазоне от 0 до 100, один массив - целыми, другой - вещественными числами
|
|
for (int i = 0; i < size; i++)
{
arr_int[i] = (int)(100.0 * (double)rand()/(double)RAND_MAX);
arr_double[i] = 100.0 * (double)rand()/(double)RAND_MAX;
}
// Сортируем один массив - ожидается, что вызовется функция
// void sort(int n, double *arr)
sort(size, arr_double);
// Сортируем второй массив - ожидается, что вызовется функция
// void sort(int n, int *arr)
sort(size, arr_int);
// Выводим сортированные массивы на экран
cout<<"Sorted int array:"<<endl;
for (int i = 0; i < size; i++) cout<<arr_int[i]<<"\t";
cout<<endl<<endl;
cout<<"Sorted double array:"<<endl;
for (int i = 0; i < size; i++) cout<<arr_double[i]<<"\t";
cout<<endl;
system("pause");
return 0;
}