gpt4 book ai didi

c++ - 增强程序 - 完全失败

转载 作者:行者123 更新时间:2023-11-28 03:42:03 25 4
gpt4 key购买 nike

大家好。我在尝试弄清楚如何增强我的程序时遇到了一些麻烦。

问题是:

编写一个程序来计算类(class)的数字成绩。类(class)记录在一个文件中,该文件将用作输入文件。输入文件的格式完全如下:每行包含一个学生的姓氏,然后是一个空格,然后是学生的名字,然后是一个空格,最后一行是十个测验分数。测验分数为整数,并以一个空格分隔。您的程序将从该文件获取输入并将其输出发送到第二个文件。输出文件中的数据将与输入文件中的数据相同,只是每行末尾会有一个额外的数字( double 类型)。这个数字将是学生十次测验分数的平均值。如果这是作为类作业完成的,请从您的教师那里获取文件名。至少使用一个将文件流作为其全部或部分参数的函数。

我成功完成了第一部分。下面是代码:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;

int main()
{
fstream infile("grades.txt",ios::in);
if(!infile){cerr<<"file could not be found!";exit(1);}

fstream outfile("average.txt",ios::out);
if(!outfile){cerr<<"file could not be created!";exit(1);}


char fname[20];
char lname[20];
int grades[10];
char c;
int x;
cout<<"how many students?";
cin>>x;

for(int k=0;k<x;k++)
{
infile>>fname;
infile>>lname;
for(int i=0;i<10;i++)
infile>>grades[i];
outfile<<fname<<" "<<lname<<" ";
double sum=0;
for(int j=0;j<10;j++)
{

outfile<<grades[j]<<" ";
sum+=grades[j];

}

double avg=0;
avg=sum/10;
outfile<<avg<<endl;
}


system("pause");
return 0;
}

我无法完成第二部分的 (a) 部分。我尝试将 grades[10] 数组初始化为零,但我没有得到任何正确的输出。有帮助吗?谢谢。

Enhance the program you wrote for (Problem 10) in all the following ways.

a-The list of quiz scores on each line will contain ten of fewer quiz scores. (If there are fewer than ten quiz scores, that means that the student missed one or more quizzes.) The average score is still the sum of the quiz scores divided by 10. This amounts to giving the student a 0 for any missed quiz.

b-The output file will contain a line (or lines) at the beginning of the file explaining the output. Use formatting instructions to make the layout neat and easy to read. c- After placing the desired output in an output file, your program will close all files and then copy the contents of the “output” file to the “input” file so that the net effect is to change the contents of the input file.
Use at least two functions that have file streams as all or some of their arguments. If this is being done as a class assignment, obtain the file names from your instruction.


这是我的代码现在的样子

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;

int main()
{
fstream infile("grades.txt",ios::in);
if(!infile){cerr<<"file could not be found!";exit(1);}

fstream outfile("average.txt",ios::out);
if(!outfile){cerr<<"file could not be created!";exit(1);}


char fname[20];
char lname[20];
int grades;
int sum=0;
int linecount=0;
char c;

while(!infile.eof())
{
infile>>lname;
infile>>fname;
outfile<<lname<<" "<<fname<<" ";
for(int i=0;i<10;i++){if(infile>>grades)outfile<<grades<<" ";else {outfile<<"0 ";break;} sum+=grades;}
outfile<<double(sum/10.0);
}
system("pause");
return 0;
}

但是当我运行程序时我得到的只是一个黑色空间。我无法修复循环以读取文件的所有行。

最佳答案

从第一部分开始:您的代码并没有完全解决给定的问题。给定的问题并不是说你输入了一些学生,而是你应该处理文件中的所有学生,不管他们有多少。此外,您还忽略了以下部分:“至少使用一个将文件流作为其全部或部分参数的函数。”

无论如何,我建议您逐行读取文件,然后使用 ostringstream 单独处理每一行。这样,检测没有更多成绩跟进的工作方式与第 1 部分中检测没有更多学生跟进的方式相同。

提示:查看流错误状态,尤其是fail,并在第 1 部分使用 while 循环,在第 2 部分使用 break .

关于c++ - 增强程序 - 完全失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8862058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com