Я бы посоветовал воспользоваться алгоритмами (писанины меньше и понятней)
Код:
#include <stdexcept>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
// must be declared
class doSmth_divMax {
double max;
public:
doSmth_divMax(const double& d) : max(d)
{
}
void operator()(double& d) const
{
d = max/d;
}
};
void doSmth(vector<double>& vd)
{
vector<double>::iterator imax = max_element(vd.begin(), vd.end());
if (vd.end()!=imax) {
for_each(vd.begin(), vd.end(), doSmth_divMax(*imax));
return;
}
throw logic_error("there is no maximum here");
}
мне кажется, что в фразе
Цитата:
и поделить его на все остальные
|
кроится какая-то ошибка. Если так, то программа будет ещё проще.