-2

I tried to write Nested if condition statement to calculate salary Raise in three condition, such as full-time, 2 part-time, or temporary. However, the result of salary Raise cannot be calculated. Are there any logic problems here. don't know where the mistakes are. Please help. Thank you for your comment.

#include <iostream> 
#include <string>
#include <iomanip>

using namespace std;

int main()
{
    char employmentStatus;
    float performanceScore, salaryRaise = 0.0;
    double fullTimeSalary = 10000;
    double partTimeSalary = 8000;
    double tempSalary = 5000;

    double rate;
    double bonus =500;


    cout << "What is your employment status?" << endl;
    cout << "Enter 1 (full-time), 2 (part-time), or 3 (temporary)"<< endl;
    cin >> employmentStatus;

    cout << "Now enter your performance score" << endl;
    cin >> performanceScore;
    cout << endl;

    cout << fixed << showpoint << setprecision(2);


    if (employmentStatus == 1)
    {
        if(performanceScore >= 8)
        {
            rate = 0.04;
            salaryRaise = fullTimeSalary * (1 + rate) + bonus;
        }
        else if (performanceScore < 8 && performanceScore >= 6)
        {
            rate = 0.025;
            salaryRaise = fullTimeSalary * (1 + rate) + bonus;
        }
        else
        {
            salaryRaise = fullTimeSalary; 
        }
        cout << "Your salary raise is: $" << salaryRaise << endl;
    }

    else if (employmentStatus == 2)
    {

        if (performanceScore >= 8)
        {
            rate = 0.03;
            salaryRaise = partTimeSalary + (salaryRaise*rate);

        }
        if (performanceScore < 8 && performanceScore >= 6)
        {
            rate = 0.015;
            salaryRaise = partTimeSalary + (salaryRaise*rate);
        }
        if (performanceScore < 6 )
        {
            salaryRaise = partTimeSalary 
        }
    }

    else if (employmentStatus == 3)
    {
        salaryRaise = tempSalary 
    }

    else 
    {
        cout << " No result" << endl; 
    }   

    cout << "Your salary raise is: $" << salaryRaise << endl;

    system("pause");
    return 0;
}

1 Answers1

3

Your problems vary from logic to syntax.

Full code after my fix:

#include <iostream> 
#include <string>
#include <iomanip>

using namespace std;

int main()
{
    char employmentStatus;
    float performanceScore, salaryRaise = 0.0;
    double fullTimeSalary = 10000;
    double partTimeSalary = 8000;
    double tempSalary = 5000;

    double rate;
    double bonus =500;


    cout << "What is your employment status?" << endl;
    cout << "Enter 1 (full-time), 2 (part-time), or 3 (temporary)"<< endl;
    cin >> employmentStatus;

    cout << "Now enter your performance score" << endl;
    cin >> performanceScore;
    cout << endl;

    cout << fixed << showpoint << setprecision(2);


    if (employmentStatus == '1')
    {
        if(performanceScore >= 8)
        {
            rate = 0.04;
            salaryRaise = fullTimeSalary * (1 + rate) + bonus;
        }
        else if (performanceScore < 8 && performanceScore >= 6)
        {
            rate = 0.025;
            salaryRaise = fullTimeSalary * (1 + rate) + bonus;
        }
        else
        {
            salaryRaise = fullTimeSalary; 
        }
        cout << "Your salary raise is: $" << salaryRaise << endl;
    }

    else if (employmentStatus == '2')
    {

        if (performanceScore >= 8)
        {
            rate = 0.03;
            salaryRaise = partTimeSalary + (salaryRaise*rate);

        }
        if (performanceScore < 8 && performanceScore >= 6)
        {
            rate = 0.015;
            salaryRaise = partTimeSalary + (salaryRaise*rate);
        }
        if (performanceScore < 6 )
        {
            salaryRaise = partTimeSalary;
        }
    }

    else if (employmentStatus == '3')
    {
        salaryRaise = tempSalary;
    }

    else 
    {
        cout << " No result" << endl; 
        return 0;
    }   

    cout << "Your salary raise is: $" << salaryRaise << endl;

    return 0;
}

Problems detected and explained solutions:

  1. Syntax: There are couple of semi colons missing, you should debug this yourself compiler tells you where exactly.
  2. Logic: You were doing this if (employmentStatus == 1) instead of if (employmentStatus == '1'), this not a problem on syntax level since C++ does implicit conversion of char to its ASCII code please see my answer on this for better explanation.
  3. Syntax: system("pause") look at this, this and this. Just drop it.
  4. Logic: If there are no results you should quit don't go further and display the raise, hence you have to add return 0; in the last condition.
Oussama Ben Ghorbel
  • 2,132
  • 4
  • 17
  • 34