#include <iostream>
#include <iomanip>
int plus5(int arg) {
return arg + 5;
}
int multiply3(int arg) {
return 3 *arg;
}
typedef int (*function_t)(int);
void for_each(int * begin, int * end, function_t func) {
for ( ; begin != end; ++begin) {
*begin = func(*begin);
}
}
int main() {
std::size_t const size = 5;
int array[] = {1, 2, 3, 4, 5};
std::cout << "add 5 to each element: ";
for_each(array, array + size, plus5);
for (std::size_t i = 0; i != size; ++i) {
std::cout << std::setw(4) << array[i];
}
std::cout << std::endl;
std::cout << "multiply each element by 3: ";
for_each(array, array + size, multiply3);
for (std::size_t i = 0; i != size; ++i) {
std::cout << std::setw(4) << array[i];
}
std::cout << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCgppbnQgcGx1czUoaW50IGFyZykgewogICByZXR1cm4gYXJnICsgNTsKfQoKaW50IG11bHRpcGx5MyhpbnQgYXJnKSB7CiAgIHJldHVybiAzICphcmc7Cn0KCnR5cGVkZWYgaW50ICgqZnVuY3Rpb25fdCkoaW50KTsKCnZvaWQgZm9yX2VhY2goaW50ICogYmVnaW4sIGludCAqIGVuZCwgZnVuY3Rpb25fdCBmdW5jKSB7CiAgIGZvciAoIDsgYmVnaW4gIT0gZW5kOyArK2JlZ2luKSB7CiAgICAgICpiZWdpbiA9IGZ1bmMoKmJlZ2luKTsKICAgfQp9CgoKaW50IG1haW4oKSB7CiAgIHN0ZDo6c2l6ZV90IGNvbnN0IHNpemUgPSA1OwogICBpbnQgYXJyYXlbXSA9IHsxLCAyLCAzLCA0LCA1fTsKCiAgIHN0ZDo6Y291dCA8PCAiYWRkIDUgdG8gZWFjaCBlbGVtZW50OiAgICAgIjsKICAgZm9yX2VhY2goYXJyYXksIGFycmF5ICsgc2l6ZSwgcGx1czUpOwogICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpICE9IHNpemU7ICsraSkgewogICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3KDQpIDw8IGFycmF5W2ldOwogICB9CiAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgogICBzdGQ6OmNvdXQgPDwgIm11bHRpcGx5IGVhY2ggZWxlbWVudCBieSAzOiAiOwogICBmb3JfZWFjaChhcnJheSwgYXJyYXkgKyBzaXplLCBtdWx0aXBseTMpOwogICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpICE9IHNpemU7ICsraSkgewogICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3KDQpIDw8IGFycmF5W2ldOwogICB9CiAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cn0K