В вашем коде есть логическая ошибка, из-за которой неверно производится расчёт нового значения x. Вы выполняете целочисленное деление, которое приводит к потере точности и неправильному результату в выражении (1 + (p/100)). Поскольку p - целочисленное значение, выражение (p/100) будет давать 0 до тех пор, пока p меньше 100.
Чтобы исправить это, вам нужно использовать вещественные числа для процентов. Используйте тип данных float или double для переменных x, p, y и для вычисления процента. Вот как можно исправить вашу программу:
#include
using namespace std;
int main() {
double x, p, y; // Используйте тип данных double для хранения вещественных чисел
int years = 0; // years остается целочисленной переменной, так как количество лет не может быть дробным
cin >> x >> p >> y;
while (x < y) {
x *= (1 + p / 100.0); // Используйте 100.0 для обозначения вещественного литерала
years++;
}
cout << years << endl;
return 0;
}
После этих изменений ваша программа должна корректно вычислять количество лет, необходимых для достижения суммы y при начальном вкладе x и процентной ставке p.
x = начальное число
y =максимальное число
p = проценты, на которые увеличивается х каждый год
нужно посчитать через сколько лет начальное число станет не менее y рублей.
дан такой код:
при вводе x = 100, p = 10, y = 200
years должна равняться 8, но ничего не подсчитывается.
Код запускается, но не выполняется. Пожалуйста, укажите мою ошибку..