c++-初学C++中类的使用,求助

问题描述

初学C++中类的使用,求助
初学类的使用,在Accelerated C++上遇到编程题目如下:
编写一个类以及相关的函数以为学生产生成绩,用P/F表示成绩
假设只根据期中和期末成绩来计算,而且,如果一个学生的平均考试分数大于等于60的话,那这个学生及格
输出时列出学生姓名并列出相应的成绩,成绩用P/F表示
从data.txt读入成绩信息,将成绩输出到result.txt

data.txt截图如下:

以下是我的代码:
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

class Student_Info
{
private:
string name;
int midfinal;
public:
Student_Info(): name("" "")mid(0)final(0){}; //默认构造函数
Student_Info(string sint xint y);

~Student_Info(){}

void input(string s int x int y); //读入学生成绩数据
inline string output_name(){return name;} //输出学生姓名
inline bool pass(){return ((mid+final)>=60)?1:0;} //判断是否及格
};

void Student_Info::input(string sint xint y)
{
name=s;
mid=x;
final=y;
}

Student_Info::Student_Info(string sint xint y)
{
input(sxy);
}

char grade(Student_Info student)
{
return student.pass()?'P':'F';
}

int string2int(string txt)
{
int num;
stringstream ss;
ss< ss>>num;
if(!ss.good())
{
cerr<<""转换失败!""<<endl;
exit(1);
}
return num;
}

int main()
{
vector students;
vector pass;
vector tempnames;
vector points;
string tmpstr;
int xyi=0length=0;
Student_Info student;
ifstream fin(""data.txt"");
ofstream fout(""result.txt"");
getline(fin tmp);
//cout< while(getline(fintmp))
{
istringstream stream(tmp);
while(stream>>str)
temp.push_back(str);
x=string2int(temp1);
y=string2int(temp[2]);
student.input(temp[0]xy);
students.push_back(student);
pass.push_back(grade(student));
names.push_back(student.output_name());
temp.clear();
}
for(;i<names.size();i++)
{
if(length<names[i].size())
length=names[i].size();
}
length=max(length12);
fout<<left<<setw(length)<<""学生姓名""<<""学生成绩""<<endl;
for(i=0;i<names.size();i++)
fout<<left<<setw(length)<<names[i]<<pass[i]<<endl;
fin.close();
fout.close();
system(""pause"");
return 0;
}

问题如下:
在运行时只会瞬间弹出空的控制台并且立即退出,生成一个空的result.txt文档;在文件中添加测试语句(如以上代码所示),无输出。
尝试逐语句调试,在main函数两处涉及Student_Info类变量的声明处发现类私有成员都没有按照默认构造函数初始化
请问这究竟是什么原因造成的?该如何修改?

解决方案

#if 1
#include
#include
#include
#include

#include
using namespace std;
class Student_Info
{
private:
string name;
int mid final;
public:
Student_Info() : name("" "") mid(0) final(0){}; //默认构造函数
Student_Info(string s int x int y);
~Student_Info(){}
void input(string s int x int y); //读入学生成绩数据
inline string output_name(){ return name; } //输出学生姓名
inline bool pass(){ return ((mid + final) >= 60) ? 1 : 0; } //判断是否及格
};
void Student_Info::input(string s int x int y)
{
name = s;
mid = x;
final = y;
}
Student_Info::Student_Info(string s int x int y)
{
input(s x y);
}
char grade(Student_Info student)
{
return student.pass() ? 'P' : 'F';
}
int string2int(string txt)
{
int num;
stringstream ss;
ss >> num;
if (!ss.good())
{
cerr << ""转换失败!"" << endl;
exit(1);
}
return num;
}

int max(int x int y)
{
return x > y ? x : y;
}

int main()
{
vector students;
vector pass;
vector temp names;
vector points;
string tmp str;
int x y i = 0 length = 0;
Student_Info student;
ifstream fin(""data.txt"");
ofstream fout(""result.txt"");
getline(fin tmp);
//cout< while(getline(fintmp))
{
istringstream stream(tmp);
while (stream >> str)
temp.push_back(str);
x = string2int(temp[1]);
y = string2int(temp[2]);
student.input(temp[0] x y);
students.push_back(student);
pass.push_back(grade(student));
names.push_back(student.output_name());
temp.clear();
}
for (; i<names.size(); i++)
{
if (length<names[i].size())
length = names[i].size();
}
length = max(length 12);
fout << left << setw(length) << ""学生姓名"" << ""学生成绩"" << endl;
for (i = 0; i<names.size(); i++)
fout << left << setw(length) << names[i] << pass[i] << endl;
fin.close();
fout.close();
system(""pause"");
return 0;
}
#endif

这是我修改后的代码...

时间: 2024-09-17 04:42:00

c++-初学C++中类的使用,求助的相关文章

persistence-初学JPA,报错求助:No Persistence provider for EntityManager named

问题描述 初学JPA,报错求助:No Persistence provider for EntityManager named 报错信息: Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named jpatest at javax.persistence.Persistence.createEntityManager

c++ 编程问题-大神!求助!初学!C++想编写一个基于命令提示符的日记本

问题描述 大神!求助!初学!C++想编写一个基于命令提示符的日记本 初学C++想编写一个基于命令提示符的日记本代码没有报错,但是程序不能按步骤执行.菜单项1.写日记2.查看历史(暂时不实现)3.退出编译环境用的visual studio 2013 代码如下:/*menuinputsave*/#include using namespace std;const int d_array=20;void diary_menu();int judge_dparameter();void cycle_me

二进制-初学C……求助float有效数字的问题

问题描述 初学C--求助float有效数字的问题 关于浮点数有效数字我有很多疑惑,我发现我读入一个浮点数后再输出,两个数字是不相等的.开始我以为是我输入的数字超过了float有效数字位数的原因,但是下面这个程序证明不是这个原因: #include <stdio.h>#include <float.h>int main(void){float test;char data[7];printf(""Float has at least %d effective nu

数据-小弟初学coreseek,遇到了头疼的问题。求助.

问题描述 小弟初学coreseek,遇到了头疼的问题.求助. 完全初学者,要对11亿条数据进行索引,看网上推荐coreseek. 于是就下载了.建立索引的过程很正常. 可是当我要启动索引服务的时候.就出现了这样的错误 按照我的理解 索引应该会很大才对MYSQL的文件大概是300多G. 可是这个索引建立完才128G.启动也是这样的错误. 晚上查到类似的错误要重新建立索引.于是昨晚重建了一次. 可是结果还是一样的. 求救. 解决方案 coreseek 遇到的问题 解决方案二: 32位程序超出4G寻址

代码-初学springmvc 报错 求助

问题描述 初学springmvc 报错 求助 JSP页面表单信息: <form action="springmvc/testmodelattribute" method="post"> id:<input type="hidden" name="id" value="1"> <br> username: <input type="text" na

初学go语言就遇到问题。求助

问题描述 初学go语言就遇到问题.求助 如图所示.运行的时候不出结果,运行build的时候也没有exe文件生成. 解决方案 package main //这个是必须的,所有的go文件必须以 package开头 import "fmt" // "fmt"是go必须要引入格式化I/O的库.如果要引入多个库import用( )号包裹所有的库.例如 import ( "fmt" "strconv") func main() { //这

[初学求助]制作完的windows窗体应用程序如何导出exe文件?

问题描述 [求助]制作完的windows窗体应用程序如何导出exe文件?变成能够单独运行的小程序?vs2010谢谢!在线等. 解决方案 解决方案二:你说的意思是自己运行你编写的windows窗体应用程序吧操作:点击生成-->配置管理器-->活动解决方案配置下拉菜单中选择release-->生成-->VS2010的输出窗口会有生成成功的提示这时会在项目的目录下有个binrelease目录里就生成一个EXE文件了.可直接使用

【初学求助】我做了一个验证登录的东西但是无论怎么输入帐号密码都显示错误

问题描述 如题求助 解决方案 解决方案二:一样的代码前几分钟运行都是对的后面就不知道怎么不行了解决方案三:学会调试先解决方案四:sql建议selectpassword,能输出下看看,不过既然你说一样的代码之前是对的后来错了,一般是数据库的问题,应该是数据库动了什么,你最好把错误也贴上来解决方案五:撸主1.打开visualstudio2.F5,打断点,拿到运行时sql变量的值,去数据库执行下,对照下数据库的值和你输入的是否一致或者使用sqlprofilers监控下,单击登录按钮后,提交到数据库的s

java中类引用与接口引用可以相互赋值吗,这个好奇怪啊,请高手求助

问题描述 我想问问这位大侠在下面这个程序注释中的"问题一.问题二.问题三.问题四"都是什么意思,各有什么作用呀?为什么注释中的"问题三.问题四"运行不正确呀?谢谢!!程序如下:interfaceIFEx1{}interfaceIFEx2{}classCEximplementsIFEx1{}publicclassInterfacesample{publicstaticvoidmain(String[]args){CExc=newCEx();IFEx1ifex1=c;/