现在的位置: 首页 > 综合 > 正文

1.2.7 GPA

2017年12月04日 ⁄ 综合 ⁄ 共 1035字 ⁄ 字号 评论关闭
#include<iostream>
#include<string>
#include<iomanip>

using namespace std;

#define max 1000

int main(int argc, char* argv[])
{
	double result;
	int i;
	char line[max];
l:
	while(cin.getline(line, max))
	{
		int len = string(line).length();

		result = 0.0;

		for(i = 0; i < len; i++,i++)
		{
			switch(line[i])
			{
				case 'A':result += 4;break;
				case 'B':result += 3;break;
				case 'C':result += 2;break;
				case 'D':result += 1;break;
				case 'F':result += 0;break;
				default:
				{
					cout << "Unknown letter grade in input"<< endl;
					goto l;
				}
			}
		}
		//cout << setiosflags(ios::fixed) << setprecision(2) << result /(i/2) << endl;
		cout << fixed << setprecision(2) << result / (i/2) << endl;
	}
	return 0;
}
///use hash instead of switch-case
#include<iostream>
#include<string>
#include<iomanip>

using namespace std;

#define max 1000

int main(int argc, char* argv[])
{
	double result;
	int i;
	char line[max];
	int hash[6] = {4, 3, 2, 1, 0, 0};
l:
	while(cin.getline(line, max))
	{
		int len = string(line).length();

		result = 0.0;

		for(i = 0; i < len; i++,i++)
		{
			int temp = line[i] - 'A';
			if((temp >= 0 && temp <=3) || temp == 5)
				result += hash[temp];
			else
			{
				cout << "Unknown letter grade in input"<< endl;
				goto l;
			}
		}
		cout << fixed << setprecision(2) << result / (i/2) << endl;
	}
	return 0;
}
【上篇】
【下篇】

抱歉!评论已关闭.