Вот что у меня есть:
for (int x = 0; x < 20; x++) {
double product = day_changes[0];
if (x > 0) {
product *= day_changes[x];
}
cout << product << ", ";
}
По сути, у меня уже есть массив, называемый "day_changes", который имеет значения. Я хочу умножить все значения в массиве вместе.
Я полагал, что у меня может быть продукт [0] = day_changes [0], но тогда я хотел, чтобы он работал так, чтобы продукт * day_changes [1] = продукт и т.д. Остальная часть массива.
Вместо этого я просто получаю точные цифры, которые я ввел в первую очередь.
Здесь вывод:
1, 1.0211, 1.00308, 0.99995, 0.999939, 0.995816, 1.00394, 0.999062, 0.998132, 1.00014, 0.995925, 0.9892, 1.0127, 0.995615, 1.00294, 0.992832, 0.999695, 1.02132, 0.996056, 1,
Почему это происходит?
Инициализировать product
до подходящего значения вне цикла: -
double product = 1.0; <<<<< Initialize it.
for (int x = 0; x < 20; x++)
product *= day_changes[x];
cout << product; <<<<< yuppie I got correct value.
Вам нужно перенести первый и последний операторы вне цикла for. Вы повторно инициализируете продукт и печатаете его для каждого элемента массива.
Вы не можете получить доступ к переменной вне блока, где она создана. Просто объявляйте double product=1.0
перед циклом.
double product = 1 /* Empty product. */; for (...)
.