Open sergey-shambir opened 6 years ago
Ошика здесь: https://github.com/LShelagin/cpp_course/blob/master/workshop2/workshop2.6/main.cpp#L62 Аналогично в workshop2.7 и т.д. У функции не указан тип, стандарт C++ запрещает такое.
/home/sergey/App/Projects/Learn/SFML/PS-1/PS_11/shelagin.lev/workshop2/workshop2.6/main.cpp:62:37: error: ISO C++ forbids declaration of ‘removeDeathBalls’ with no type [-fpermissive]
removeDeathBalls(vector<Ball> &balls)
1) Эффект функции createNewBall не соответствует её названию 2) Кроме того, менять цвета существующих шаров при создании нового считаю излишним
void createNewBall(vector<Ball> &balls, vector<Color> &colors, PRNG &generator)
{
for (int i = 0; i < size(balls); ++i)
{
balls[i].ball.setFillColor(getRandomColor(generator, colors));
}
}
workshop2.8 работает некорректно:
1) Функции getImpuls
(почему не getImpulse
?) и getEnergy
одинаковы
float getImpuls(vector<Ball> &balls, const float BALL_SIZE)
{
float impuls;
for (int i = 1; i < size(balls); ++i)
{
impuls += pow(BALL_SIZE, 3) * sqrt(pow(balls[i].speed.x, 2) + pow(balls[i].speed.y, 2));
}
return impuls;
}
float getEnergy(vector<Ball> &balls, const float BALL_SIZE)
{
float energy;
for (int i = 1; i < size(balls); ++i)
{
energy += pow(BALL_SIZE, 3) * (pow(balls[i].speed.x, 2) + pow(balls[i].speed.y, 2));
}
return energy;
}
2) Закон сохранения импульса выполняется в векторной форме: т.е. надо вычислить и сложить вектора импульсов по всем шарикам, а потом можно вычислить длину полученного суммарного вектора импульса. Именно длину вектора суммарного импульса можно сравнивать до и после расчёта соударений.
Ошибка компиляции workshop2: компилятор увидел определение функции, в котором нет типа возвращаемого значения.