C : моя программа считывает только числа, которые я ввожу, как сотни, хотя я ввел их как тысячи

#c

#c

Вопрос:

Вот данные моего задания:

Вычислите денежную стоимость сберегательной облигации стоимостью 25 000 фунтов стерлингов в любое время в соответствии со следующим:

  • Если облигации меньше 6 месяцев, проценты равны нулю.
  • Если облигации от 6 до 12 месяцев, процентная ставка составляет 1 процент.
  • Если облигации от 13 до 18 месяцев, процентная ставка составляет 2 процента.
  • Если облигации от 19 до 24 месяцев, процентная ставка составляет 3,5 процента.

Вот мой код:

 #include <iostream>
using namespace std;

int main()
{
    int Savings_Bond = 25000;
    int Age_Bond = 6 amp;amp; 12 amp;amp; 13 amp;amp; 18 amp;amp; 19 amp;amp; 24;
    int Interest = 0.01 amp;amp; 0.02 amp;amp; 0.035;
    int TotalV;

    cout << "How long this bond been on? : ";
    cin >> Age_Bond;

    if (Age_Bond < 6)
    {
        TotalV = Savings_Bond * 0;
        cout << "Your Interest Rate : "
             << "0%"
             << "n";
        cout << "Total Value : " << TotalV << "n";
    }
    else if (Age_Bond = 6   12)
    {
        TotalV = Savings_Bond * 0.01;
        cout << "Your Interest Rate : "
             << "1%"
             << "n";
        cout << "Total Value : " << TotalV << "n";
    }
    else if (Age_Bond = 13   18)
    {
        TotalV = Savings_Bond * 0.02;
        cout << "Your Interest Rate : "
             << "2%"
             << "n";
        cout << "Total Value : " << TotalV << "n";
    }
    else if (Age_Bond = 19   24)
    {
        TotalV = Savings_Bond * 0.035;
        cout << "Your Interest Rate : "
             << "3.5%"
             << "n";
        cout << "Total Value : " << TotalV << "n";
    }
    return 0;
}
  

Вот как это выглядит:

 How long this bond been on? : 17
Your Interest Rate : 1%
Total Value : 250
  

Комментарии:

1. int Age_Bond = 6 amp;amp; 12 amp;amp; 13 amp;amp; 18 amp;amp; 19 amp;amp; 24; будет инициализироваться Age_Bond 1 . Добавьте распечатки ваших переменных для отладки вашей программы — или запустите ее в реальном отладчике. Кроме того, в if (Age_Bond = 6 12) вы присваиваете 18 Age_Bond .

2. Можете ли вы объяснить, что делает эта строка? int Interest = 0.01 amp;amp; 0.02 amp;amp; 0.035;

3. Также обратите внимание, что это Age_Bond = 6 12 будет выполнять присваивание, а не сравнение (то есть == )

4. Это выглядит как код, который раньше был почти правильным, но становился все хуже и хуже в результате бесплодных попыток исправить исходную проблему.

Ответ №1:

Похоже, у вас есть некоторые недоразумения относительно того, как условные выражения работают в C .

Если облигации от 6 до 12 месяцев, процентная ставка составляет 1 процент

В C это написано так

 else if (Age_Bond >= 6 amp;amp; Age_Bond <= 12)
  

У вас есть другие проблемы

 int Age_Bond = 6 amp;amp; 12 amp;amp; 13 amp;amp; 18 amp;amp; 19 amp;amp; 24;
int Interest = 0.01 amp;amp; 0.02 amp;amp; 0.035;
  

Я не уверен, что, по вашему мнению, делают эти объявления, но в этом нет ничего полезного. Вы не используете Interest переменную, поэтому вы можете просто удалить ее. И Age_Bond переменная получает свое значение из пользовательского ввода, поэтому вам не нужно указывать здесь значение. Просто используйте

 int Age_Bond;
  

Наконец, ваши вычисления значений неверны. Если процент равен 0%, то значение облигации равно 25000, но, согласно вашим расчетам, значение будет равно нулю. Если процент равен 1%, то значение равно 25250, но ваш расчет дает 250 и т.д. По сути, вам нужно добавить интерес к существующему значению.

Комментарии:

1. Большое вам спасибо, и да, мои расчеты совершенно неверны, спасибо за напоминание, что я исправляю это сейчас.