2016-01-18 2 views
-4

У меня есть код и он не может читать Бонус как переменную.Не могу читать Бонус как переменная

Вот мой код:

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    char Bonus,Salary,TotalSalary; 
    int num1, num2; 

    cout <<"Enter the hours of work for week"<<endl; 
    cin >> num1; 
    cout <<"Enter your hourly rate"<<endl; 
    cin >>num2; 

    Salary = num1 * num2; 

    if (Bonus >= 45) 
     cout <<"Your bonus is 500 pesos"<<endl; 
    else if (Bonus>40&&Bonus<=45) 
     cout <<"Your bonus is 250 pesos"<<endl; 
    else if (Bonus>45&&Bonus<=40) 
     cout <<"Your bonus is 150 pesos"<<endl; 

    TotalSalary=Salary + Bonus; 

    cout <<"Your basic salary is" <<Salary <<"with a bonus of" <<Bonus <<"and a   total of"<<TotalSalary<<endl; 

    system("pause"); 
    return 0; 
} 

Я надеюсь, что вы можете помочь мне с моей проблемой, заранее спасибо.

+1

Где вы установите 'Bonus' поле? Вы ожидаете, что пользователь сможет его ввести? – SMA

+2

Что вы имеете в виду? Вы не можете прочитать его как числовое значение из 'cin'? Также почему вы объявили эти переменные как «char»? –

+0

«Бонусу» не присвоено значение, поэтому любой код, который его использует, произведет бессмысленность. Кроме того, обычно не рекомендуется использовать переменные 'char' для хранения целочисленных значений. Это работает, но для зарплат и т. Д. Они не имеют достаточно большого диапазона. –

ответ

1

Потому что ваши Bonus и Salary и TotalSalary переменными являются char. Поэтому вы должны объявить их как переменную int. И Bonus используется без инициализации, который вызывает https://en.wikipedia.org/wiki/Undefined_behavior, поэтому вы можете инициализировать его до 0. Кроме того, вы должны попросить пользователя ввести Bonus по

cout <<"Enter the Bonus"<<endl; 
cin >> Bonus; 

И он должен работать.

`#include <iostream> 
#include <string> 
using namespace std; 
int main() 
{ 
int Salary,TotalSalary; 
int num1, num2, Bonus = 0; 

cout <<"Enter the hours of work for week"<<endl; 
cin >> num1; 
cout <<"Enter your hourly rate"<<endl; 
cin >>num2; 

cout <<"Enter the Bonus"<<endl; 
cin >> Bonus; 


Salary = num1 * num2; 

if (Bonus >= 45) 
cout <<"Your bonus is 500 pesos"<<endl; 
else if (Bonus>40&&Bonus<=45) 
cout <<"Your bonus is 250 pesos"<<endl; 
else if (Bonus>45&&Bonus<=40) 
cout <<"Your bonus is 150 pesos"<<endl; 

TotalSalary=Salary + Bonus; 

cout <<"Your basic salary is " <<Salary <<" with a bonus of " <<Bonus <<" and a total of "<<TotalSalary<<endl; 

system("pause"); 
return 0; 
} 
+0

Спасибо, он работает, но вы можете помочь мне с еще одной вещью? Мой кут на конце тоже испорчен. Я очень ценю вашу помощь – Alvin

+0

Я только что обновил ее, пожалуйста, проверьте ее снова. – Khuong

+0

Большое спасибо. – Alvin

0

Несколько вопросов с кодом:

Salary = num1 * num2; 

Bonus, Salary и TotalSalary определяются как char, в то время как они должны быть определены как int тоже.

Bonus используется без инициализации, которая вызывает undefined behavior.

Компилятор должен был предупредить вас об этом. Убедитесь, что предупреждения включены и находятся на самом высоком уровне.


Некоторые подробности о вашем if statements:

if (Bonus >= 45) 
    cout << "Your bonus is 500 pesos" << endl; 
else if (Bonus>40 && Bonus<=45) 
    // minor detail, but can't be equal to 45 again 
    cout <<"Your bonus is 250 pesos" << endl; 
else if (Bonus>45 && Bonus<=40) 
    // mayor detail: can never be >45 *and* <=40 at the same time 
    cout <<"Your bonus is 150 pesos" << endl; 

Вы могли бы изменить, что:

// You probably want to check Salary instead of Bonus? 
// although the values (like 45) might be off 
Salary = num1 * num2; 

if (Salary >= 45) 
    Bonus = 500; 
else if (Salary > 40) 
    Bonus = 250; 
else 
    Bonus = 150; 

cout << "Your bonus is " << Bonus << " pesos" << endl; 

Полный пример:

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    int num1 = 0, 
     num2 = 0, 
     Bonus = 0, 
     Salary = 0, 
     TotalSalary = 0; 

    cout << "Enter the hours of work for week: "; 
    cin >> num1; 
    cout << "Enter your hourly rate: "; 
    cin >> num2; 

    Salary = num1 * num2; 

    // values (like 45) might be off here 
    if  (Salary >= 45) Bonus = 500; 
    else if (Salary > 40) Bonus = 250; 
    else     Bonus = 150; 

    cout << "Your bonus is " << Bonus << " pesos" << endl; 

    TotalSalary = Salary + Bonus; 

    cout << "Your basic salary is " << Salary 
     << " with a bonus of "  << Bonus 
     << " and a total of "  << TotalSalary << endl; 

    system("pause"); 
    return 0; 
} 
0

Hy! Где вы определяете Bonus (тип полукокс) объявлена, но никогда не определяется, прежде чем испытать его в

if(Bonus>=45) 

В этот момент ваш char Bonus может иметь любое возможное значение, заданное во время выполнения. Нет назначения по умолчанию, такого как Bonus = 0 или что-то вроде этого.

+0

Вы должны немного отполировать свою терминологию. –

+0

да, это означает «объявление», «определение» aso. спасибо – Claudiu

+0

Вы должны использовать термин _ «initialization» _ вместо _ «definition» _. Переменная также объявлена ​​и определена на самом деле. Определение имеет больше смысла, например. статические переменные-члены, которые могут быть объявлены и должны быть определены отдельно. –

0

Bonus не имеет значения, и это char.

Тип ваших переменных должны быть int, и я подозреваю, что вы хотите установить Bonus до величины, зависящей от Salary:

int Bonus = 0; 
int Salary = 0; 
int TotalSalary = 0; 

// ... 

if (Salary >= 45) 
    Bonus = 500; 
else if (Salary > 40) 
    Bonus = 250; 
else 
    Bonus = 150; 

TotalSalary = Salary + Bonus; 
// ... 
+0

Спасибо за помощь. знак равно – Alvin

Смежные вопросы