#include <iostream>
// return pointer to location from function
double* maximum(double *a, int size)
{
if (size == 0) return 0;
// initialize both variables
double* max_pos = a; // points to the value in a[0]
double maxVal = *max_pos; // this is the starting max value
std::cout << "max_pos = " << max_pos << " (" << maxVal << ")" << std::endl;
for(int i = 1; i < size; ++i){
if (a[i] > maxVal){
max_pos = &a[i];
maxVal = *max_pos;
std::cout << "max_pos = " << max_pos << " (" << maxVal << ")" << std::endl;
}
}
// return address
return max_pos;
}
int main()
{
const int arrSize = 5;
double myarr[arrSize];
std::cout << "Input " << arrSize << " floating point values for your array" << std::endl;
for(int i = 0; i < arrSize; ++i){ // loop to input values
std::cin >> myarr[i];
}
for(int j = 0; j < arrSize; ++j){
std::cout << "Location for " << myarr[j] << " = " << &myarr[j] << std::endl;
}
double* maxNum = maximum(myarr, arrSize);
std::cout << "maxNum = " << maxNum << " (" << *maxNum << ")" << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8gcmV0dXJuIHBvaW50ZXIgdG8gbG9jYXRpb24gZnJvbSBmdW5jdGlvbgpkb3VibGUqIG1heGltdW0oZG91YmxlICphLCBpbnQgc2l6ZSkKewogICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIDA7CgogICAgLy8gaW5pdGlhbGl6ZSBib3RoIHZhcmlhYmxlcwogICAgZG91YmxlKiBtYXhfcG9zID0gYTsgLy8gcG9pbnRzIHRvIHRoZSB2YWx1ZSBpbiBhWzBdCiAgICBkb3VibGUgbWF4VmFsID0gKm1heF9wb3M7IC8vIHRoaXMgaXMgdGhlIHN0YXJ0aW5nIG1heCB2YWx1ZQogICAgc3RkOjpjb3V0IDw8ICJtYXhfcG9zID0gIiA8PCBtYXhfcG9zIDw8ICIgKCIgPDwgbWF4VmFsIDw8ICIpIiA8PCBzdGQ6OmVuZGw7CgogICAgZm9yKGludCBpID0gMTsgaSA8IHNpemU7ICsraSl7CiAgICAgICAgaWYgKGFbaV0gPiBtYXhWYWwpewogICAgICAgICAgICBtYXhfcG9zID0gJmFbaV07CiAgICAgICAgICAgIG1heFZhbCA9ICptYXhfcG9zOwogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIm1heF9wb3MgPSAiIDw8IG1heF9wb3MgPDwgIiAoIiA8PCBtYXhWYWwgPDwgIikiIDw8IHN0ZDo6ZW5kbDsKICAgICAgICB9CiAgICB9CgogICAgLy8gcmV0dXJuIGFkZHJlc3MKICAgIHJldHVybiBtYXhfcG9zOwp9CgppbnQgbWFpbigpCnsKICAgIGNvbnN0IGludCBhcnJTaXplID0gNTsKICAgIGRvdWJsZSBteWFyclthcnJTaXplXTsKCiAgICBzdGQ6OmNvdXQgPDwgIklucHV0ICIgPDwgYXJyU2l6ZSA8PCAiIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmb3IgeW91ciBhcnJheSIgPDwgc3RkOjplbmRsOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBhcnJTaXplOyArK2kpeyAvLyBsb29wIHRvIGlucHV0IHZhbHVlcwogICAgICAgIHN0ZDo6Y2luID4+IG15YXJyW2ldOwogICAgfQoKICAgIGZvcihpbnQgaiA9IDA7IGogPCBhcnJTaXplOyArK2opewogICAgICAgIHN0ZDo6Y291dCA8PCAiTG9jYXRpb24gZm9yICIgPDwgbXlhcnJbal0gPDwgIiA9ICIgPDwgJm15YXJyW2pdIDw8IHN0ZDo6ZW5kbDsKICAgIH0KCiAgICBkb3VibGUqIG1heE51bSA9IG1heGltdW0obXlhcnIsIGFyclNpemUpOwogICAgc3RkOjpjb3V0IDw8ICJtYXhOdW0gPSAiIDw8IG1heE51bSA8PCAiICgiIDw8ICptYXhOdW0gPDwgIikiIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==