1. 程式人生 > >Coursera 學習記錄:發票統計(使用switch進行資料歸類)

Coursera 學習記錄:發票統計(使用switch進行資料歸類)

描述

有一個小型的報賬系統,它有如下功能: (1)統計每個人所報發票的總錢數 (2)統計每類發票的總錢數 將此係統簡化為如下:假設發票類別共有A、B、C三種;一共有三個人,ID分別為1、2、3。

輸入 系統輸入包含三行,每行第一個數為人員ID(整型,1或2或3),第二個數為發票總張數(張數不超過100), 之後是多個發票類別(字元型,A或B或C)和相應發票金額(單進度浮點型,不超過1000.0)。 輸出 輸出包含六行,前三行為每人(按ID由小到大輸出)所報發票總錢數(保留兩位小數),後三行為每類發票的總錢數(保留兩位小數)。

//輸出兩位小數
#include<iomanip>;
cout<<fixed<<setprecision(2)<<num<<endl;

//對於ABC的分類。可以使用switch
#include<iostream>;
#include<iomanip>;
using namespace std;

int main() {
	float m[3][3] = { 0 };
	// 明確一點:使用陣列+for迴圈進行儲存
	// 陣列的邊界是確定的:3×3
	int ID, n;
	for (int i = 0; i < 3; i++) {
		cin >> ID >> n;
		for (int i = 0; i < n; i++) {
			char type;
			float price;
			cin >> type >> price;
			switch (type) {
				case 'A':m[ID - 1][0] += price; break;
				case 'B':m[ID - 1][1] += price; break;
				case 'C':m[ID - 1][2] += price; break;
				default:break;
			}

		}	
			
	}
	for (int i = 0; i < 3; i++) {
		cout << i + 1 << ' ';
		cout << fixed << setprecision(2) << m[i][0] + m[i][1] + m[i][2] << endl;
	}
	for (int i = 0; i < 3; i++) {
		cout << char(i + 65) << ' ';
		cout << fixed << setprecision(2) << m[0][i] + m[1][i] + m[2][i] << endl;
	}
	return 0;
}