简单的学生信息处理程序实现
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
在一个学生信息处理程序中,要求实现一个代表学生的类,并且所有成员变量都应该是私有的。
(注:评测系统无法自动判断变量是否私有。我们会在结束之后统一对作业进行检查,请同学们严格按照题目要求完成,否则可能会影响作业成绩。)
输入
姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
其中姓名、学号为字符串,不含空格和逗号;年龄为正整数;成绩为非负整数。
各部分内容之间均用单个英文逗号”,”隔开,无多余空格。
输出
一行,按顺序输出:姓名,年龄,学号,四年平均成绩(向下取整)。
各部分内容之间均用单个英文逗号”,”隔开,无多余空格。
输入:
Tom,18,7817,80,80,90,70
输出:
Tom,18,7817,80
作业源码:
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
class student{
public:
void out(){
cout<<name<<","<<a<<","<<b<<","<<aveg()<<endl;
}
void init(string a_){
for(int i=0;i<a_.size();++i){
if(ispunct(a_[i]) || i==a_.size()-1){
if(i==a_.size()-1){
g=g+"0";
b_.push_back(g);
break;
}
b_.push_back(g);
g="";
}else{
g=g+a_[i];
}
}
name=b_[0];
a=str2int(b_[1]);
b=str2int(b_[2]);
c=str2int(b_[3]);
d=str2int(b_[4]);
e=str2int(b_[5]);
f=str2int(b_[6]);
}
private:
int a,b,c,d,e,f;
string name,g;
vector<string> b_;
int aveg(){
return((c+d+e+f)/4);
}
int str2int(string str){
int sum=0;
for(int i=str.size()-1;i>-1;--i){
sum+=((int)str[i]-48)*(pow(10,(str.size()-i-1)));
}
return sum;
}
};
int main(){
string a;
student d;
getline(cin,a);
d.init(a);
d.out();
return 0;
}