2013-11-07 21 views
0

Привет, мое задание должно состояться через пару часов, и я пытаюсь написать свой код для создания этого вывода, но он не работает. Моя программа даже не запускается вообще и всегда терпит неудачу, и я не знаю, в чем проблема. У меня возникли проблемы с тем, что нужно разместить в int main() и как обрабатывать данные из файла в функции! Я пытаюсь навсегда .. Мне нужна большая помощь !!!!! спасибо за ваше времяПроблемы с int main()/functions

образец входного файла:

Miss Informed 
125432 32560.0 
Sweet Tooth 
5432 9500 
Bad Data 
1255 -4500.0 
John Smith 
1225 3500.0 
Nancy Brown 
1555 154500.0 

КОД:

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

using namespace std; 



    int main() 
    { 
     float CalcIncomeTax(float); 
     float CalcNetSalary(float, float); 
     bool OpenFile(ifstream& fin); 
     bool OpenFile(ofstream& fout); 
     void Instruct(void); 
     void ReadData(ifstream & fin, string& Name , int &Id, float& grossIncome); 
     void Print(ofstream&, string, int, float, float, float); 

     ifstream fin; 
     ofstream fout; 
     string  Name; 
     int   Id = 0; 
     float  grossIncome = 0; 
     float  netSalary; 
     float  incomeTax = 0; 


     Instruct(); 


      netSalary = CalcNetSalary(grossIncome,incomeTax); 
      incomeTax = CalcIncomeTax(grossIncome); 
      Print(fout, Name, Id, grossIncome, incomeTax, netSalary); 
      ReadData(fin, Name, Id, grossIncome); 

     OpenFile(fin); 
     { 
      getline(fin, Name); 
      while (!fin.eof()) 
      { 
       fin >> Id >> grossIncome; 
       cout << setw(20) << left << Name 
       << setw(8) << right << Id 
       << setw(10) << grossIncome << endl; 
       fin.ignore(10,'\n'); 
       fin >> Id >> grossIncome; 
      } 
      getline(fin,Name); 
     } 

     OpenFile(fout); 

     ReadData(fin, Name, Id, grossIncome); 


     fin.close(); 
    } 


      bool OpenFile(ifstream&fin) 
    { 
     cout <<"\nEnter the name and location of the input file: "; 
     string file_input; 
     getline(cin, file_input); 
     fin.open(file_input.c_str()) ; 
     if(fin.fail()) 
      return false; 
     else 
      return true; 
    } 
      bool OpenFile(ofstream &fout) 
    { 
     cout <<"Enter the name and location of the output file: "; 
     string file_output; 
     getline(cin, file_output); 
     fout.open(file_output.c_str()); 
     if (fout.fail()) 
     return false; 
     else 
     return true; 
    } 


     void Instruct() 
    { 
     cout << "Programmer:"<< setw(25) << "//" << endl; 
     cout << "Programming Assignment" << setw(5) << "4" << endl; 
     cout << "This program will calculate and report tax liability" << endl; 
    } 

     float CalcIncomeTax(float grossIncome) 
    { 
     float incomeTax = 0; 

     if (grossIncome <= 3500) 
     { 
      incomeTax = 0.00; 
     } 
     else if (grossIncome >= 3500 && grossIncome <= 8000) 
     { 
      incomeTax = 0 + 0.06 * (grossIncome - 3500); 
     } 
     else if (grossIncome >= 8000 && grossIncome <= 20000) 
     { 
      incomeTax = 270.00 + 0.11 * (grossIncome - 8000); 
     } 
     else if (grossIncome >= 20000 && grossIncome <= 34000) 
     { 
      incomeTax = 1590.00 + 0.17 * (grossIncome - 20000); 
     } 
     else if (grossIncome >= 34000 && grossIncome <= 54000) 
     { 
      incomeTax = 3970.00 + 0.24 * (grossIncome - 34000); 
     } 
     else if (grossIncome >= 54000) 
     { 
      incomeTax = 8770.00 + 0.32 * (grossIncome - 52000); 
     } 
     else if (grossIncome < 0) 
     { 
      cout << "****Invalid Income"; 
     } 
     return(incomeTax); 
    } 


     float CalcNetSalary(float grossIncome, float incomeTax) 
    { 
     float netSalary; 
     netSalary = grossIncome - incomeTax; 
     return (netSalary); 
    } 

     void Print(ofstream& fout, string Name, int Id, float grossIncome, float incomeTax, float netSalary) 
    { 
     cout << setfill(' ') << left << setw(18) << "\tName"; 
     cout << setfill(' ') << left << setw(12) << "ID"; 
     cout << setfill(' ') << left << setw(17) << "Gross Income"; 
     cout << setfill(' ') << left << setw(12) << "Taxes"; 
     cout << setfill(' ') << left << setw(16) << "Net Income"; 
     cout << endl; 

     cout << setfill('=') << setw(70)<<"\t"; 
     cout<<endl; 

     cout << setprecision(2) << showpoint << fixed; 
     cout << setfill(' ') << "\t" << setw(17)<< Name; 
     cout << setfill(' ') << setw(12) << Id; 
     cout << '$' << setfill(' ') << setw(16) << grossIncome; 
     cout << '$' << setfill(' ') << setw(11) << incomeTax; 
     cout << '$' << setfill(' ') << setw(16) << netSalary; 
     cout << endl; 
    } 

КАК ВЫХОД ДОЛЖЕН БЫТЬ

Name    ID   Gross Income  Taxes   Net Income 
Miss Informed 125432  $32560.00  **** Invalid ID 
Sweet Tooth  5432   $9500.00   $435.00   $9065.00 
Bad Data   1255   $-4500.00  **** Invalid Income 
John Smith  1225   $3500.00   $0.00   $3500.00 
Nancy Brown  1555   $154500.00  $40930.00  $113570.00 
+0

Используйте отладчик. Просто как тот. –

+2

['while (! Eof())' is wrong.] (Http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – chris

ответ

2

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

Это займет несколько итераций. Начнем с того, что может читать из файла:

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; // This is a good TEMPORARY SHORTCUT. 

int main() 
{ 
    ifstream fin("inputdata"); 

    string firstName, lastName; 

    fin >> firstName >> lastName; 

    cout << "First name is " << firstName << endl; 
    cout << "Last name is " << lastName << endl; 

    return(0); 
} 

Опубликовать комментарий, когда у вас есть это работает, и мы переходим к следующему шагу.

+3

один день stackoverflow заменит университеты –

+0

Я не могу закодировать его таким образом, потому что я должен пригласить пользователя для имени файла – user2914173

+0

Начать небольшой и рефакторинг для добавления функций. Если вы можете загрузить жесткий диск, попробуйте запросить пользователя и убедитесь, что он работает, и т. Д. –

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