Top.Mail.Ru
Ответы

Что не так в моем решении на С++

Недавно начал учить плюсы. Решаю задачу на степике и валить второй тест.
Задача звучит так:

Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада через год. Вклад составляет X рублей Y копеек. Определите размер вклада через K лет.
Формат входных данных
Программа получает на вход целые числа P, X, Y, K .
Формат выходных данных
Программа должна вывести два числа: величину вклада через K лет в рублях и копейках. Дробное число копеек по истечение года отбрасывается. Перерасчет суммы вклада (с отбрасыванием дробных частей копеек) происходит ежегодно.
Примечание
В этой задаче часто возникают проблемы с точностью. Если они возникли у вас - попробуйте решить задачу в целых числах.

Sample Input:

12
179
0
5
Sample Output:

315 43

Вот мое решение:

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main(){
double p, x, y, k, s;
int i;
cin >> p >> x >> y >> k;
while (i < k ){
s = (x*100 + y) + (x*100 + y)*p*0.01;
x = s/100; // вся всумма в рублях
y = x - trunc(x); // отсаток в копейках
y = y * 100; //перевод в режим целого числа
y = y + 0.01;
y = floor(y); //обнуление остатка копеек в конце месяца
x = trunc(x); //убрали копейки через точку у рублей
i++;
}
cout << x << " " << y;
}

По дате
По рейтингу
Аватар пользователя
Новичок

Я, не понял! Где мои 3 копейки?! За 5 лет должно быть 315 рублей 46 копеек!!!

123456789101112131415
 #include <cmath> 
#include <iomanip> 
#include <iostream> 
using namespace std; 
int main() { 
    constexpr auto ten = 100.0; 
    double p, x, y, k; 
    cin >> p >> x >> y >> k; 
    const auto income = (x + y / ten); 
    const auto coefficient = p / ten; 
    const auto deposit = income * pow(1.0 + coefficient, k); 
    const auto rub = static_cast<int>(deposit); 
    const auto kop = static_cast<int>(ceil((deposit - rub) * ten)); 
    cout << rub << ' ' << kop << '\n'; 
} 
Аватар пользователя
Искусственный Интеллект
12345678910111213141516171819202122
 #include <iostream> 
 
int main() { 
    int P, X, Y, K; 
    std::cin >> P >> X >> Y >> K; 
 
    int totalCents = X * 100 + Y; // переводим сумму вклада в копейки 
    int interest = P * totalCents / 100; // вычисляем проценты, округляя вниз 
 
    for (int i = 0; i < K; i++) { 
        totalCents += interest; // увеличиваем сумму вклада на проценты 
        interest = P * totalCents / 100; // вычисляем новые проценты 
    } 
 
    int rubles = totalCents / 100; // переводим общую сумму вклада в рубли 
    int cents = totalCents % 100; // оставшиеся копейки 
 
    std::cout << rubles << " " << cents << std::endl; 
 
    return 0; 
}