Can you tell me what's wrong with it because it's not running on visual studio and I need it right now???

#include <iostream>
#include<vector>
#include<algorithm>
#include<limits>
#include<fstream>
#include<string>

using namespace std;

class PayRoll
{
    private:
      vector<int> salaries;
    public:
      PayRoll();
      bool searchSalary(int salary);
      void generateStats();
      void printSalaries();
};

PayRoll::PayRoll()
{
    ifstream in("newdata.txt");
    if(!in.good())
    {
        cout<<"Sorry Data File is not Found"<<endl;
        exit(1);
    }
    else
    {   string str;
        while(!in.eof())
        {
            in>>str;
            int temp = atoi(str.c_str());
            salaries.push_back(temp);
        }
    }
}

bool PayRoll::searchSalary(int salary)
{
    return (find(salaries.begin(),salaries.end(),salary) != salaries.end());
}

void PayRoll::generateStats()
{
    int minimumSalary = numeric_limits<int>::max();
    int maximumSalary = numeric_limits<int>::min();

    for(vector<int>::const_iterator iter = salaries.begin();iter<salaries.end();iter++)
    {
        if(*iter<minimumSalary) minimumSalary = *iter;
        if(*iter>maximumSalary) maximumSalary = *iter;
    }
    ofstream out("stats.txt");
    out<<"Minimum Salary is: "<<minimumSalary<<endl;
    out<<"Maximum Salary is: "<<maximumSalary<<endl;

}

void PayRoll::printSalaries()
{
    for(vector<int>::const_iterator iter = salaries.begin();iter<salaries.end();iter++)
    {
        cout<<(*iter)<<endl;
    }
}




int main() {

    PayRoll payroll;
    int selection;

    do
    {
    cout<<"Search Salary, Enter 1"<<endl;
    cout<<"Generates Stats file, Enter 2"<<endl;
    cout<<"Print Salaries, Enter 3"<<endl;
    cout<<"Quit, Enter 4"<<endl;
    cin>>selection;
    switch(selection)
    {
        case 1:
          int tempSalary;
          cout<<"Enter Salary to search: "<<endl;
          cin>>tempSalary;
          if(payroll.searchSalary(tempSalary)) cout<< "Salary Found "<<endl;
          else cout<<"Salary not found"<<endl;
          break;
        case 2:
          payroll.generateStats();
          break;
        case 3:
          payroll.printSalaries();
          break;
        case 4:
          break;
        default:
          cout<<"Enter a valid Selection"<<endl;
          break;
    }
    }while(selection != 4);


    return 0;
}

Recommended Answers

All 2 Replies

That builds and runs fine. My guess is that it finishes very quickly because it can't find the datafile and you don't even realise it ran and finished.

If you want to see the message comment out line #27 exit(1);

In VC++ you can do the following to see where your program is running:

Add include statement:

#include<direct.h>

Then add the following code to "Payroll::Payroll"

char* buffer;
string curDir;

// Get the current working directory: 
if( (buffer = _getcwd( NULL, 0 )) == NULL )
{
      perror( "_getcwd error" );
}
else
{
    curDir = buffer;
    printf("Current Directory: %s \n", buffer);
    free(buffer);
}

Then change

from:

cout<<"Sorry Data File is not Found"<<endl;

to:

cout<<"Sorry Data File is not Found (" << curDir << ")" << endl;

Better yet, you can make the path of your input file fully-qualified to ensure that the file is where you expect it to be.

Resource:
_getcwd, _wgetcwd

Be a part of the DaniWeb community

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