首页 > 其他分享 >平均绩点

平均绩点

时间:2023-09-11 11:14:31浏览次数:30  
标签:绩点 cnt ++ res else break str 平均

https://kamacoder.com/problem.php?id=1006

题目

每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。

有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。

每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。

getline

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string str;
	while (getline(cin, str))
	{
    	int cnt = 0;
    	bool flag = 1;
    	double res = 0.0;
	    for (int i = 0; i < str.size(); ++i)
	    {
	        if (str[i] == 'A') { res += 4.0; cnt++; }
	        else if (str[i] == 'B') { res += 3.0; cnt++; }
	        else if (str[i] == 'C') { res += 2.0; cnt++; }
	        else if (str[i] == 'D') { res += 1.0; cnt++; }
	        else if (str[i] == 'F') { res += 0.0; cnt++; }
	        else if (str[i] == ' ') continue;
	        else {
	            cout << "Unknown" << endl;
	            flag = 0;
	            break;
	        }
	    }
	    if (flag)
	    {
	        printf("%.2f\n", res / cnt);
	    }
	}

	return 0;
}

getchar

比较麻烦,而且还不能通过,可能是因为while( getchar()!='\n )'死循环

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	double res = 0.0;
	char ch;
	int cnt = 0;
	bool unknown = false;
	while (cin >> ch)
	{
		switch (ch) {
		case 'A': res += 4.0; break;
		case 'B': res += 3.0; break;
		case 'C': res += 2.0; break;
		case 'D': res += 1.0; break;
		case 'F': res += 0.0; break;
		default: unknown = true;  break;
		}
		if (unknown)
		{
		    cout << "Unknown" << endl;
		    unknown = false;
		    while (getchar() != '\n') {}
		    res = 0.0;
		    cnt = 0;
		    continue;
		}
		cnt++;
		if (getchar() == '\n')
		{
		    cout.setf(ios_base::fixed, ios_base::floatfield);
			cout << setprecision(2) << res / (1.0 * cnt) << endl;
			cnt = 0;
			res = 0.0;
			continue;
		}
	}

	return 0;
}

标签:绩点,cnt,++,res,else,break,str,平均
From: https://www.cnblogs.com/comein/p/17692966.html

相关文章

  • 小米 AR 运动主机「15 分钟消耗一碗米饭」;互联网行业平均薪资降至 3 万档丨RTE开发者
      开发者朋友们大家好:这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE (RealTimeEngagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,......
  • Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均
    全文链接:https://tecdat.cn/?p=33550原文出处:拓端数据部落公众号什么是时间序列?时间序列是一系列按时间顺序排列的观测数据。数据序列可以是等间隔的,具有特定频率,也可以是不规则间隔的,比如电话通话记录。在进行投资和交易研究时,对于时间序列数据及其操作要有专业的理解。本文......
  • linux查看平均cpu占用率
    如果想要获取平均占用率,可以在top命令后添加"-d"参数,指定刷新时间间隔(单位为秒),例如top-d1这样会每隔1秒更新一次CPU的占用率信息。请注意,top命令会实时显示系统状态,您可以按下键盘上的"q"来退出top命令。......
  • Python平均数
    Python是一门高级语言,拥有丰富的数学计算库和科学计算工具,并且被广泛应用于数据处理、科学计算和人工智能等领域。在Python中,平均数被广泛使用,本文将从多个方面对Python平均数进行详细的阐述。一、平均数的基本概念平均数是一组数据中所有数据值的总和除以数据总个数后得到的结......
  • 高基数类别特征预处理:平均数编码
    一前言对于一个类别特征,如果这个特征的取值非常多,则称它为高基数(high-cardinality)类别特征。在深度学习场景中,对于类别特征我们一般采用Embedding的方式,通过预训练或直接训练的方式将类别特征值编码成向量。在经典机器学习场景中,对于有序类别特征,我们可以使用LabelEncoder进行编......
  • 【Python】pandas操作, 取最大值, 最小值, 平均值, 生成 空值, 多个 series合并, 替换
    1.取最大值,最小值,平均值df.max()df.iloc[:,1:].max()df.min()df.mean()#输出indexvalue2.生成空值,带index的seriespd.Series(index=['1','2','3'],dtype='object')"""1NaN2NaN3NaNdtype:objec......
  • Heikin Ashi最简单的一种烛台移动平均线
    是不是每次进行交易的时候,市场上的各种新闻真真假假,搞的交易者每次都分不清楚,今天FPmarkets澳福给各位投资者推荐一种交易策略——“Heikin  Ashi”“Heikin  Ashi”只通过四个参数构建:开盘价、收盘价、最高价和最低价(最大和最小价格数据值)。换句话说,标准的日本条形图被重新......
  • iOS开发之--Masonry多个平均布局
    使用Masonry平均布局,代码如下:其实就是用Masonry提供的两个方法,如下:/***distributewithfixedspacing**@paramaxisType横排还是竖排*@paramfixedSpacing两个控件间隔*@paramleadSpacing第一个控件与边缘的间隔*@paramtailSpa......
  • 这个list元素是用;分割的字符串 将每个元素用;分割成字符串数组 并将每个数组将相同位
    publicstaticvoidmain(String[]args){List<String>list=newArrayList<>();list.add("2.0;2.2;4.0");list.add("3.0;4.2;5.0");list.add("4.0;5.2;3.0");String[]firstRow=list.get(0).split("......
  • MysSQL 行转列以及列转行(学生的各科成绩,以及总分和平均分)
    一、行转列即将原本同一列下多行的不同内容作为多个字段,输出对应内容。1.建表语句--新建学生成绩表DROPTABLEIFEXISTStb_score;createtabletb_score(idint(11)notnullauto_increment,user_noVARCHAR(32)notnullcomment'学生工号',subject......