D:\OOP\Practice area\Funtion poiter\Practice1.cpp 1
#include <iostream>
#include <functional>
#include <utility>
#define MAX 300
using namespace std;
bool asc(int a, int b);
bool dsc(int a, int b);
void Intersort(int* arr, int n, bool (*compare)(int, int));
void swap(int& a, int& b);
void Input(int* a, int& n);
void Output(int* a, int n);
int main()
{
int a[MAX];
int n;
Input(a, n);
cout << "This is ascending: ";
Intersort(a, n, asc);
Output(a, n);
cout << "This is decending: ";
Intersort(a, n, dsc);
Output(a, n);
return 0;
}
bool asc(int a, int b)
{
return a < b;
}
bool dsc(int a, int b)
{
return a > b;
}
void Intersort(int* arr, int n, bool (*compare)(int, int))
{
int i, j, min;
for (i = 0; i < n - 1; i++)
{
min = i;
for (j = i + 1; j < n; j++)
{
if (compare(arr[j], arr[min]))
{
min = j;
}
D:\OOP\Practice area\Funtion poiter\Practice1.cpp 2
}
swap(arr[min], arr[i]);
}
}
void swap(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
void Input(int* a, int& n)
{
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
}
void Output(int* a, int n)
{
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
}

Preview text:

D:\OOP\Practice area\Funtion poiter\Practice1.cpp 1 #include #include #include #define MAX 300 using namespace std; bool asc(int a, int b); bool dsc(int a, int b);
void Intersort(int* arr, int n, bool (*compare)(int, int));
void swap(int& a, int& b);
void Input(int* a, int& n); void Output(int* a, int n); int main() { int a[MAX]; int n; Input(a, n);
cout << "This is ascending: "; Intersort(a, n, asc); Output(a, n);
cout << "This is decending: "; Intersort(a, n, dsc); Output(a, n); return 0; } bool asc(int a, int b) { return a < b; } bool dsc(int a, int b) { return a > b; }
void Intersort(int* arr, int n, bool (*compare)(int, int)) { int i, j, min; for (i = 0; i < n - 1; i++) { min = i; for (j = i + 1; j < n; j++) { if (compare(arr[j], arr[min])) { min = j; }
D:\OOP\Practice area\Funtion poiter\Practice1.cpp 2 } swap(arr[min], arr[i]); } }
void swap(int& a, int& b) { int temp = a; a = b; b = temp; } void Input(int* a, int& n) { cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; } void Output(int* a, int n) { for (int i = 0; i < n; i++)
cout << a[i] << " "; cout << endl; }