私のプロジェクトは、setw()、setfill()、setiosflags() を使用してこの出力を作成することです。
Enter KWH used 993
C O M P S C I Electric
------------------------------------------------
Kilowatts Used 993
------------------------------------------------
Base Rate 993 @ $ 0.0475 $ 47.17
Surcharge $ 4.72
Citytax $ 1.42
______
Pay this amount $ 53.31
After May 20th Pay $ 55.44
コードを使用してこれを機能させることができますが、使用するキロワットが 2 桁の場合のみです。桁数が多い場合、右詰めが機能しません。コードを編集して、3 桁、4 桁などに正しく配置できます。コードがテストされるとき、入力されるキロワットがわからないので、任意の桁数のキロワットで機能するコードが必要です。
/*
* File: main.cpp
* Author: -------------------------
*
* Created on ----------------------
*/
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
/*
*
*/
int main() {
float br; // base rate
float surcharge; // surcharge
float taxrate; // tax rate
float late; // late rate
float kwh; // kilowatts used
float bc; // base cost
float scc; // surcharge cost
float ctc; // city tax cost
br = .0475; // kilowatt rate
surcharge = .1; // surcharge rate
taxrate = .03; // tax rate
late = .04; //rate if payment is late
// cout.width(38);
cout << "Kilowatts used last month: ";
cin >> kwh; // get kwh used from user
cout << "\n";
cout << "\n";
cout << " C O M P S C I Electric " << "\n";
cout << setiosflags(ios::fixed|ios::showpoint) << setprecision(2); // set ios flags
cout << setfill('-') << setw(38) << "\n"; // display dashes in line
cout << setiosflags(ios::left) << "Kilowatts Used" << setfill(' ') << setw(23) << resetiosflags(ios::left) << kwh << "\n"; // output kwh formally
cout << setfill('-') << setw(38); // separate
cout << "\n" << "\n";
// calculations
bc = br * kwh;
scc = surcharge * kwh;
ctc = taxrate * kwh;
cout << left << "Base Rate " << kwh << " @ $0.0475 " << setfill(' ') << setw(4) << right << "$" << bc << "\n"; //output base rate, right justify cost
cout << left << "Surcharge" << setw(24) << right << "$" << scc << "\n"; // output surcharge cost, right justify cost
return 0;
}
正当化するためsetw()
に使用する場合の必要性がわかりません。andをandresetiosflags(ios::left)
に置き換えてみました。setiosflags(ios::left)
resetiosflags(ios::left)
right
left
私は、netbeans c++ を使用してコーディングし、g++ をコンパイルする C++ の初心者です。コンソール出力のフォーマットについてはあまりよく知らないので、助けていただければ幸いです。別の方法が任意のフロート長で一貫して機能する限り、上部に指定されている 3 つの関数を必ずしも使用する必要はありません。ありがとう!