2012-02-01 13 views
0

私は、従業員のユーザー入力からすべての情報を収集するためにループを作成する必要があります。あなたが見ることができるように、私はユーザーに何人の従業員とその情報があるかを尋ねる部分を手に入れました。C++で画面に情報を出力するソリューションですか?

Weekly Payroll: 
Name...............Title........Gross.......Tax.........Net 

----------------------------------------  

Ebenezer Scrooge.....................Partner...250.00......62.25.....187.75 

Bob Cratchit...............................Clerk.......15.00........2.00.......13.00 

そして、これは私が持っているものです:今、私がする必要があるすべては、単にそれぞれの間に、それぞれの間にいくつかのスペースをピリオドなしで、次のように画面にその情報の印刷である

#include <iostream> 
using namespace std; 


const int MAXSIZE = 20; 


struct EmployeeT 
{ 
    char name[MAXSIZE]; 
    char title; 
    double SSNum; 
    double Salary; 
    double Withholding_Exemptions; 
}; 

EmployeeT employees[MAXSIZE]; 

int main() 
{ 

cout << "How many Employees? "; 
int numberOfEmployees; 
cin >> numberOfEmployees; 



    while(numberOfEmployees > MAXSIZE) 
    { 

      cout << "Error: Maximum number of employees is 20\n" ; 
      cout << "How many Employees? "; 
      cin >> numberOfEmployees; 
    } 


      char name[MAXSIZE]; 
      int title; 
      double SSNum; 
      double Salary; 
      double Withholding_Exemptions; 


      for (int count=0; count < numberOfEmployees; count++) 
      { 
       cout << "Name: "; 
       cin >> employees[ count ].name; 

       cout << "Title: "; 
       cin >> employees[ count ].title; 

       cout << "SSNum: \n"; 
       cin >> employees[ count ].SSNum; 

       cout << "Salary: \n"; 
       cin >> employees[ count ].Salary; 

       cout << "Withholding Exemptions: \n"; 
       cin >> employees[ count ].Withholding_Exemptions; 
      } 

      double gross; 
      double tax; 
      double net; 
      double adjusted_income; 

      gross = employees[ count ].Salary; 
      adjusted_income = employees[ count ].Salary - 1.00; 
      tax = adjusted_income * .25; 
      net = gross - tax; 


      cout << "Weekly Payroll:\t Name \t Title \t Gross \t Tax \t Net \n"; 

      for (int count=0; count < numberOfEmployees; count++) 
      { 
       cout << employees[count].name << " \t" << employees[count].title << " \t" << 
       gross << "\t" << tax << "\t" << net << "\n"; 
      } 
      system("pause"); 

}

私はプログラムを更新しました。今私は計算をしようとしています。私がやっているこれは...

は給与を計算するには:

総賃金は以前に従業員のために入力された毎週の給料です。

正味給与は、総支払額から税額を引いたものとして計算されます。

税金を計算するには、各源泉徴収免除の給与から$ 1を控除します。これが調整後の収入です。調整後の収入が0未満の場合は、調整後の収入として0を使用します。

調整後の所得に税率を乗算します。税率は平準で25%と仮定してください。

例として、Bob Cratchitの所得が$ 15と7の扶養家族の場合、調整後の所得は$ 8になります。彼の税金は$ 8の25%で$ 2だから、彼の純賃金は$ 13です。

私はこれを取得しようとし始めました。私はそれを2番目のループと最後のループの間に置きます。これは正しいですか?

+3

具体的にしてください。正確には動作しません。何を試しましたか?コードを投稿する場合は、問題を示すために必要な最小限に減らしてください。例えば、この質問はあなたのプログラムの出力に関するものなので、関連していないので、ユーザから入力された部分をいくつかのハードコードされたデータに置き換えてください。良いコード例を書く方法の詳細については、http://sscce.orgを参照してください。 –

答えて

0

あなたが挿入して表示したり、何のために同じループを使用することができます!それはループ全体を横断するためです。

cout << "Weekly Payroll:\t Name \t Title \t Gross \t Tax \t Net \n"; 

for (int count=0; count < numberOfEmployees; count++) 
{ 
    cout << employees[count].name << " \t" << employees[count].title << " \t" << 
     Gross << "\t" << tax << "\t" << Net << "\n"; 
} 

各構造体オブジェクトのネット、税金および総額を検索して印刷します。

マークされた位置に名前をintとして表示するかどうかを確認します。

#include <iostream> 
using namespace std; 

const int MAXSIZE = 20; 

struct EmployeeT { 

    char name[MAXSIZE]; 
    char title; 
    double SSNum; 
    double Salary; 
    double Withholding_Exemptions; 
}; 

EmployeeT employees[MAXSIZE]; 

int main() { 

    cout << "How many Employees? "; 
    int numberOfEmployees; 
    cin >> numberOfEmployees; 

    while(numberOfEmployees > MAXSIZE) { 

     cout << "Error: Maximum number of employees is 20\n" << 
      "How many Employees? "; 
     cin >> numberOfEmployees; 
    } 

    int name;   // name is char[] or string 
    int title; 
    double SSNum; 
    double Salary; 
    double Withholding_Exemptions; 

    for (int count = 0; count < numberOfEmployees; count++) { 

     cout << "Name: \n"; 
     cin >> employees[ count ].name; 

     cout << "Title: \n"; 
     cin >> employees[ count ].title; 

     cout << "SSNum: \n"; 
     cin >> employees[ count ].SSNum; 

     cout << "Salary: \n"; 
     cin >> employees[ count ].Salary; 

     cout << "Withholding Exemptions: "; 
     cin >> employees[ count ].Withholding_Exemptions; 
    } 
} 
+0

私のプログラムを更新しました。私のためにそれをチェックし、私の追加された質問を見てください。ありがとう – Gvegas222

+0

あなたは1人の従業員のために何をしたいのかのコードを書いてください。それを添え字付きのループの中に入れてください。その基本的なアイデア! –

0

C++で表現されている '\ t'シーケンスを使用することができます(「Tab」キーを押したときと同じように)。 ループに関しては、それはのようなものでなければなりません:それは動作するはずです

cout << "Weekly Payroll:\t Name \t Title \t Gross \t Tax \t Net \n"; 

for(int n=0; n < employees; n++) 
{ 
cout << employees[n].name << " \t" << employees[n].title << " \t" ...... << "\n"; 
} 

:)

1

C++ストリームを使用して印刷列の小さな例:

#include <iomanip> 
#include <ios> 

std::ostream& operator<<(std::ostream& a_out, const EmployeeT& a_e) 
{ 
    a_out << std::setfill(' ') 
      << std::left 
      << std::setw(sizeof(a_e.name)) 
      << a_e.name 
      << std::setw(0) 
      << a_e.title 
      << " " 
      << std::setw(10) 
      << a_e.SSNum 
      << a_e.Salary 
      << a_e.Withholding_Exemptions; 

    return a_out; 
} 

これは、使用して標準出力に従業員を書き込むことができるようになる:

std::cout << employees[n] << "\n"; 

ために同様のアプローチを使用します列見出し。

その他の見所:

  • char[](またはchar*)にstd::stringを好む、あなたは文字列の長さを制限する必要がある(または明示的にメモリを管理)していない
  • 使用std::vector代わりに、固定の配列を使用して制限を回避する
  • コンテナ(または配列)内の要素の操作を実行するためのSTLアルゴリズム(たとえばstd::for_eachstd::copyなど)を使用する
0

あなたのコードは大丈夫ですが、それはもっと複雑ですが、入力ループにはエラー処理がありません(ユーザーが無効なものを入力した場合、プログラムは動作を停止します)。 - vectorが動的に成長することができますので、あなたが、あなたが扱うことができる従業員の数を制限する必要はありません、このよう

関連する問題