# c | c++ function return optimization

how do I optimize this code? I actually want to create a function like swap_and_return which should return from the function if done. but I could not do it.

we can see that I wrote a lot of print values and swap values which I could’ve written maybe inside of swap function.

``````void swap(int *i, int *j) {
int t = *i;
*i = *j;
*j = t;
}

void print_values(int x, int y, int z) {
cout << "x=" << x << ", y=" << y << ", z=" << z << "n";
}

float min_max(int x, int y, int z) {
float avg = 0;
if(x<y && x<z){
if (y < z) {
swap(&x, &z);
print_values(x, y, z);
avg = (x + z) / 2.0;
return avg;
}

else {
swap(&x, &y);
print_values(x, y, z);
avg = (x + y) / 2.0;
return avg;
}
}

else if(y<x && y<z){
if (x < z) {
swap(&y, &z);
print_values(x, y, z);
avg = (y + z) / 2.0;
return avg;
}

else {
swap(&y, &x);
print_values(x, y, z);
avg = (y + x) / 2.0;
return avg;
}
}

else if(z<y && z<x){
if (x < y) {
swap(&z, &y);
print_values(x, y, z);
avg = (z + y) / 2.0;
return avg;
}

else {
swap(&z, &x);
print_values(x, y, z);
avg = (z + x) / 2.0;
return avg;
}
}

return avg;

}

int main()
{
float value = min_max(5, 1, 2);
cout << value << "n";
}
``````