Greetings. I would like some guide and pointers from you all..and even if it is my homework..im not asking for someone to do it for me =|

QUESTION:
Develop a program that uses an array of structures to store an employee identification number(4digit), current annual salary and the result of supervisor evaluation( an integer field with 4 values.
1 = superior performance,
2 = above average,
3 = average,
4 = below average.
a) new employee salaries, assuming that employees whose performance is superior get a 4%increase, above avg 3% aavg2% and those with below avg no increase
b) the avg of new salaries summarized by perfromance error
c) the employee with highest new salary
d)the employee with lowest new salary

``````#include <iostream.h>

struct program
{
int employee_id;
int salary;
int eval;
char name;
};

main()
{
int i,j;
float sal;
float new_salary(float,int);

float sum_perform;
float summarization(float,int);

program employee;

for (i = 0; i<2;i++)
{

cin>>employee[i].name;

cout<<"Enter your employee identification number: ";
cin>>employee[i].employee_id;

while( employee[i].employee_id > 9999)
{
cout<<"Enter your employee identification number: ";
cin>>employee[i].employee_id;
}

cout<<"Enter current annual salary: ";
cin>>employee[i].salary;

cout<<"Enter result of supervisor evaluation: \n"
<<"    1. Superior Performance.\n"
<<"    2. Above Average.\n"
<<"    3. Average.\n"
<<"    4. Below Average.\n"
<<"     Enter rating between 1 - 4 : ";
cin>>employee[i].eval;

while(employee[i].eval<1 || employee[i].eval>4)
{
cout<<"ERROR!! Please enter result of supervisor evaluation again";
cout<<"Enter result of supervisor evaluation: \n"
<<"    1. Superior Performance.\n"
<<"    2. Above Average.\n"
<<"    3. Average.\n"
<<"    4. Below Average.\n"
<<"     Enter rating between 1 - 4 : ";
cin>>employee[i].eval;
}

sal[i]  = new_salary(employee[i].salary, employee[i].eval);
sum_perform[i] = summarization(sal[i], employee[i].eval);
}

cout<<"\n\n";
cout<<"\t-----------------------------------------------------\n";
cout<<"\t **************************************************\n";
cout<<"\t*  RRRRRRR   EEEEE  SSSSSS  UU  UU  LL     TTTTTTTT *\n";
cout<<"\t*  RR   RR   EE     SS      UU  UU  LL        TT    *\n";
cout<<"\t*  RRRRRRR   EEEEE  SSSSSS  UU  UU  LL        TT    *\n";
cout<<"\t*  RR    R   EE         SS  UU  UU  LL        TT    *\n";
cout<<"\t*  RR     R  EEEEE  SSSSSS  UUUUUU  LLLLLL    TT    *\n";
cout<<"\t **************************************************\n";

for (i = 0; i<2;i++)
{
cout<<"\n\n";
cout<<employee[i].name<<endl;
cout<<"\t"<<"Your employee identification number is: ";
if(employee[i].employee_id < 10)
cout<<"000"<<employee[i].employee_id<<endl;
else if (employee[i].employee_id < 100)
cout<<"00"<<employee[i].employee_id<<endl;
else if(employee[i].employee_id < 1000)
cout<<"0"<<employee[i].employee_id<<endl;
else
cout<<employee[i].employee_id<<endl;
cout<<"\t"<<"Your current annual salary is: RM";
cout<<employee[i].salary<<endl;
cout<<"\t"<<"Result of supervisor evaluation: ";
cout<<employee[i].eval<<endl;
cout<<"\t"<<"Your new employee salary is: RM";
cout<<sal[i]<<endl;
cout<<"\t"<<"The average of new salaries: RM"<<sum_perform[i];
cout<<"\n\n";
}
return 0;
}

float new_salary(float x, int y)
{
float n_salary;

if(y == 1)
n_salary = (0.04 *x) + x;
else if(y == 2)
n_salary = (0.03*x) + x;
else if(y == 3)
n_salary = (0.02*x) + x;
else if(y == 4)
n_salary = x;

return n_salary;
}

float summarization(float n, int b)
{
float sum = 0;
int count = 0;

if(b == 1){
sum += n ;
count++; }
else if(b == 2){
sum += n ;
count++; }
else if(b == 3) {
sum += n ;
count++;  }
else if(b == 4) {
sum += n ;
count++;  }

return sum/count;
}``````

I know it is messy :( my question is.. at b) my function summarization doesn't work..i am abit stucked..i spent the whole night thinking..>_< so if someone could help me work it out i'll be grateful :cry:

Welcome to Daniweb. Regarding your Summarization Function,

``````float summarization(float n, int b)
{
float sum = 0;
int count = 0;
if(b == 1)
{
sum += n ;
count++;
}
else if(b == 2)
{
sum += n ;
count++;
}
else if(b == 3)
{
sum += n ;
count++;
}
else if(b == 4)
{
sum += n ;
count++;
}

return sum/count;
}``````

I see that what ever the value of `b` , the operation is the same.
i.e.

``````sum += n ;
count++;``````

And as the initial values of sum and count are 0, the function can be simplified as follows.

``````float summarization(float n, int b)
{
if(b >= 1 && b <=4 )
{
return n;
}
else
{
// Error
return 0;
}
}``````

What do you exactly mean by

summarized by perfromance error

Really sorry bout that'' was supposed to mean
Erm..as in..1=superior performance..you get the new salary which is from the 1st function and sort the average based on b which is the supervisor evaluation..

Oh Okay. i think I get what you mean.
You want the average salaries the Superior Level workers worked, and so on?
Then make a small change to your summarization function.

``````int summarization(program EmpArray[],const  int NumberOfEmps)
{
float Total[ 4 ] = { 0, 0, 0, 0 };
int Count[ 4 ] = {0, 0, 0, 0 };
for ( int i = 0 ; i < NumberOfEmps; i++ )
{
Total[ EmpArray[ i ].eval - 1 ] += EmpArray[ i ].salary;
Count[ EmpArray[ i ].eval - 1] += 1;
}
if ( Count[ 0 ] != 0 )
{
cout << "Avg Sup Level Salaries = " << ( Total[ 0 ] / Count[ 0 ] << endl ;
}
if ( Count[ 1 ] != 0 )
{
cout << "Above Avg Level Salaries = " << ( Total[ 1 ] / Count[ 1 ] << endl ;
}
// So on until Count[ 4 ]
return 0;
}``````

okay...i sort of understand it..Pardon me as I'm still rather a newbie in this..

int summarization(program EmpArray[],const int NumberOfEmps)
what is EmpArray? as in..which part of it is in my coding.. o_O

float summarization(float n, int b)
In here, i take the value n from new salary..and b from employee evaluation..

I mean..yours is completely different. Could you explain that to me abit >_<

Another thing..

``````Total[ EmpArray[ i ].eval - 1 ] += EmpArray[ i ].salary;
Count[ EmpArray[ i ].eval - 1] += 1;``````

Why do you - 1 from the evaluation??
btw..I'm REALLY sorry for sounding stupid ><

Yeah. Stupid of me for not explaining. Sorry about that. Here is a simple version without using a Summarization Function.

See if you understand it.

``````#include <iostream.h>

struct program
{
int employee_id;
int salary;
int eval;
char name;
};

// Use constants for Arrays Sizes like below.
const int NUMBER_OF_EMPLOYEES = 2;
const int NUMBER_OF_PERFORMANCE_LEVELS = 4;
main()
{
int i,j;
float sal[NUMBER_OF_EMPLOYEES];
float new_salary(float,int);

float sum_perform[NUMBER_OF_PERFORMANCE_LEVELS]= { 0, 0, 0, 0 };
float TotalSalary[ NUMBER_OF_PERFORMANCE_LEVELS ] = { 0, 0, 0, 0 };
int Count[ NUMBER_OF_PERFORMANCE_LEVELS ] = { 0, 0, 0, 0 };
/* float summarization( float,int); No need for this function*/

program employee[ NUMBER_OF_EMPLOYEES ];

for (i = 0; i<NUMBER_OF_EMPLOYEES;i++)
{
cin>>employee[i].name;

cout<<"Enter your employee identification number: ";
cin>>employee[i].employee_id;

while( employee[i].employee_id > 9999)
{
cout<<"Enter your employee identification number: ";
cin>>employee[i].employee_id;
}

cout<<"Enter current annual salary: ";
cin>>employee[i].salary;

cout<<"Enter result of supervisor evaluation: \n"
<<"    1. Superior Performance.\n"
<<"    2. Above Average.\n"
<<"    3. Average.\n"
<<"    4. Below Average.\n"
<<"     Enter rating between 1 - 4 : ";
cin>>employee[i].eval;

while(employee[i].eval<1 || employee[i].eval>4)
{
cout<<"ERROR!! Please enter result of supervisor evaluation again";
cout<<"Enter result of supervisor evaluation: \n"
<<"    1. Superior Performance.\n"
<<"    2. Above Average.\n"
<<"    3. Average.\n"
<<"    4. Below Average.\n"
<<"     Enter rating between 1 - 4 : ";
cin>>employee[i].eval;
}

sal[i]  = new_salary(employee[i].salary, employee[i].eval);

TotalSalary[employee[i].eval - 1 ] += sal[i] ; // The Total Salary for a Performance Level
Count[ employee[i].eval - 1 ] +=  1;	// The Number of Workers at a Performance Level
}

cout<<"\n\n";
cout<<"\t-----------------------------------------------------\n";
cout<<"\t **************************************************\n";
cout<<"\t*  RRRRRRR   EEEEE  SSSSSS  UU  UU  LL     TTTTTTTT *\n";
cout<<"\t*  RR   RR   EE     SS      UU  UU  LL        TT    *\n";
cout<<"\t*  RRRRRRR   EEEEE  SSSSSS  UU  UU  LL        TT    *\n";
cout<<"\t*  RR    R   EE         SS  UU  UU  LL        TT    *\n";
cout<<"\t*  RR     R  EEEEE  SSSSSS  UUUUUU  LLLLLL    TT    *\n";
cout<<"\t **************************************************\n";

for (i = 0; i<NUMBER_OF_EMPLOYEES;i++)
{
cout<<"\n\n";
cout<<employee[i].name<<endl;
cout<<"\t"<<"Your employee identification number is: ";
if(employee[i].employee_id < 10)
cout<<"000"<<employee[i].employee_id<<endl;
else if (employee[i].employee_id < 100)
cout<<"00"<<employee[i].employee_id<<endl;
else if(employee[i].employee_id < 1000)
cout<<"0"<<employee[i].employee_id<<endl;
else
cout<<employee[i].employee_id<<endl;
cout<<"\t"<<"Your current annual salary is: RM";
cout<<employee[i].salary<<endl;
cout<<"\t"<<"Result of supervisor evaluation: ";
cout<<employee[i].eval<<endl;
cout<<"\t"<<"Your new employee salary is: RM";
cout<<sal[i]<<endl;

//cout<<"\t"<<"The average of new salaries: RM"<<sum_perform[i];
//cout<<"\n\n";
}
// Output the Average Salaries for Performance Levels
if ( Count[ 0 ] != 0 )
{
cout << "Sup Level Salaries Average = " << ( Total[ 0 ] / Count[ 0 ] << endl ;
}
if ( Count[ 1 ] != 0 )
{
cout << "Above-Avg Level Salaries Average = " << ( Total[ 1 ] / Count[ 1 ] << endl ;
}
if ( Count[ 2 ] != 0 )
{
cout << "Avg-Level Salaries Average = " << ( Total[ 2 ] / Count[ 2 ] << endl ;
}
if ( Count[ 3 ] != 0 )
{
cout << "Below-Avg Level Salaries Average = " << ( Total[ 3 ] / Count[ 3 ] << endl ;
}
return 0;
}

float new_salary(float x, int y)
{
float n_salary;

if(y == 1)
n_salary = (0.04 *x) + x;
else if(y == 2)
n_salary = (0.03*x) + x;
else if(y == 3)
n_salary = (0.02*x) + x;
else if(y == 4)
n_salary = x;

return n_salary;
}``````

Why I used - 1 is this.
The Performance Levels are startiing from 1and goes to 4.
But we are storing the Values in an Array, and the array elements start from the position 0.

So Superior-Level-Total will be stored in TotalSalary[ 0 ] and Above-Average-Total will be stored in TotalSalary[ 1] ...upto TotalSalary[ 3 ].

You can see that
0 = Superior-Level-Value - 1;
1 = Average-Level-Value - 1 ;
...
Hope you get it.

yup..yup its all clear now. A really big hug to you man. Now here comes another newbie question..when i add it myself and run the program..
The error Undefined symbol 'Total' in function main()...I don't get it..if TotalSalary is there..why can't i change it to Total..?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.18 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.