gpt4 book ai didi

c++ - 运行可执行文件不会执行任何操作

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:35 25 4
gpt4 key购买 nike

我正在编写一个涉及多个文件的示例。详细代码如下。

main.cpp

#include <algorithm>
#include <iomanip>
#include <ios>
#include <iostream>
#include <stdexcept>
#include <string>
#include <vector>
#include "grade.h"
#include "Student_Info.h"

using std::cin;
using std::cout;
using std::domain_error;
using std::endl;
using std::max;
using std::setprecision;
using std::sort;
using std::streamsize;
using std::string;
using std::vector;

int main()
{
vector<Student_Info> students;
Student_Info record;
string::size_type maxlen = 0; //the length of the longest name

//read and store all the student's data
//Invariant: students contains all the student records read so far
//maxlen contains the length of the longest name in students
while(read(cin,record))
{
//find length of the longest name
maxlen=max(maxlen,record.name.size());
students.push_back(record);
}

//alphabetize the student records
sort(students.begin(),students.end(),compare);

//write the names and grades
for(vector<Student_Info>::size_type i=0; i!=students.size();++i)
{
//write the name, padded to the right to maxlen + 1 characters
cout << students[i].name << string(maxlen+1-students[i].name.size(),' ');

//compute and write the grade
try
{
double final_grade=grade(students[i]);
streamsize prec = cout.precision();
cout << setprecision(3) << final_grade << setprecision(prec);
}
catch(domain_error e)
{
cout << e.what();
}

cout << endl;
}

return 0;
}

学生信息.{h,cpp}

#ifndef GUARD_Student_Info
#define GUARD_Student_Info

#include <iostream>
#include <string>
#include <vector>

using std::iostream;
using std::string;
using std::vector;

struct Student_Info
{
std::string name;
double midterm,final;
std::vector<double> homework;
};

bool compare(const Student_Info&, const Student_Info&);
std::istream& read(std::istream&, Student_Info&);
std::istream& read_hw(std::istream&, std::vector<double>&);

#endif
#include "Student_Info.h"

using std::istream;
using std::vector;

bool compare(const Student_Info& x, const Student_Info& y)
{
return x.name < y.name;
}

istream& read(istream& is, Student_Info& s)
{
is >> s.name >> s.midterm >> s.final;

read_hw(is,s.homework); //read and store all the students' homework grades
return is;
}

istream& read_hw(istream& in, vector<double>& hw)
{
if(in)
{
//get rid of previous contents
hw.clear();

//read homework grades
double x;
while(in>>x)
hw.push_back(x);

//clear the stream so that the input would work for the next student
in.clear();
}

return in;
}

成绩。{h,cpp}

#ifndef GRADE_H
#define GRADE_H

//grade.h
#include <vector>
#include "Student_Info.h"

double grade(double,double,double);
double grade(double,double,const std::vector<double>&);
double grade(const Student_Info&);

#endif

#include <stdexcept>
#include <vector>

#include "median.h"
#include "grade.h"


double grade(const Student_Info& s)
{
return grade(s.midterm,s.final,s.homework);
}

double grade(double midterm, double final, const vector<double>& hw)
{
if(hw.size()==0)
throw domain_error("student has done no homework");
return grade(midterm, final, median(hw));
}

double grade(double midterm,double final,double homework)
{
return 0.2*midterm + 0.4*final + 0.4*homework;
}

中位数。{h,cpp}

#ifndef MEDIAN_H
#define MEDIAN_H

#include <vector>
#include <stdexcept> //to get the declaration of domain_error
#include <algorithm> //to get the declaration of sortt

using std::domain_error;
using std::sort;
using std::vector;

double median(std::vector<double>);

#endif
#include "median.h"

double median(vector<double> vec)
{
typedef vector<double>::size_type vec_sz;

vec_sz size=vec.size();
if(size==0)
throw domain_error("median of an empty vector");
sort(vec.begin(),vec.end());

vec_sz mid=size/2;

return size%2==0 ? (vec[mid]+vec[mid-1])/2:vec[mid];
}

问题是当我在 Linux 上使用 g++ 编译它并运行 ./a.out 时什么也没有发生。这很奇怪。我已经检查了代码,但没有发现任何问题。希望有人能找到其中的故障。

最佳答案

“什么也没发生”,你的意思是它正在等待输入并且不会退出?

while(read(cin,record)) 对我来说确实是这样。通过标准输入传递一些东西。

关于c++ - 运行可执行文件不会执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1332840/

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