Ну, если очень срочно.. .Задания очень сложные, вот только для первого получилось найти решение)) )
Нахождение максимального элемента массива.
#include
#include
#include
#include
template
Acc foldl(F f, Acc acc, std::vector xs)
{
std::vector result;
if (xs.size() == 0)
return acc;
T head = *xs.begin();
acc = f(acc,head);
std::vector tail(xs.begin() + 1, xs.end());
return foldl(f,acc,tail);
}
#ifdef max
#undef max
#endif
template
T max(T a, T b)
{
return std::less()(a,b) ? b : a;
}
template
T maximum(std::vector xs)
{
T head = *xs.begin();
std::vector tail(xs.begin() + 1, xs.end());
return foldl(max,head,tail);
}
template
void solve(const TArray& arr)
{
std::vector arr_v(arr, arr + sizeof(arr) / sizeof(T));
T v = maximum(arr_v);
std::cout << v << std::endl;
}
int main()
{
typedef float FArray[7];
FArray arr = {5,2,3,4,10,5,6};
solve(arr);
return 0;
}
Если парсер mail.ru что-нибудь изменит, тут тоже можно код посмотреть
http://pastebin.com/8FHBJzns