最近C++を学び始め、Accelerated C++の本をフォローしています。私は第3章を読んでおり、本の中にあるプログラムを実行しようとしました。私はMAC OS上でCLionに取り組んでいます。コードは次のとおりです。MAC OS XでCLIONを使用してEOFを通知する方法
#include "iomanip"
#include "ios"
#include "iostream"
#include "string"
#include "vector"
#include "algorithm"
using std::cin; using std::cout;
using std::endl; using std::string;
using std::setprecision; using std::streamsize;
using std::vector; using std::sort;
int main()
{
// Ask for and read student's name
cout << "Please enter your name: ";
string name;
cin >> name;
cout << "Hello, "<< name << "!"<< endl;
// Ask for and read mid-term and final grades
cout << "Please enter your mid-term and final grades: ";
double midterm_grade, final_grade;
cin >>midterm_grade >> final_grade;
// Ask for homework grades
cout << "Enter all your homework grades, followed by end-of-file";
vector<double> homework;
double x;
//Invariant : Homework contains all homework grades read so far
while (cin >> x)
{
homework.push_back(x);
}
// Check that the student entered some homework grade
typedef vector<double>:: size_type vector_size;
vector_size size = homework.size();
if(size == 0)
{
cout << "You must enter your grades. Please try again" << endl;
return 1;
}
// Sort the grades
sort(homework.begin(), homework.end());
// Compute the median output grade
vector_size mid = size/2;
double median;
median = size % 2 == 0 ? (homework[mid] + homework[mid-1])/2 : homework[mid];
// Compute and write the final grade
streamsize prec = cout.precision();
cout << "Your final grade is :" << setprecision(3) << 0.2*midterm_grade + 0.4*final_grade + 0.4*median<< setprecision(prec) << endl;
return 0;
}//
プログラムがコンパイルされ、名前とグレードも入力できます。しかしCtrl + D(端末から確認されたEOFで、ここではHow to signal EOF of stdin when in mac osx terminal?と提案されています)またはCmd + D(提案されているように)を押します。
Ctrl + Dを押すと、プログラムが再起動します。 Cmd + Dを押すと、異常な動作をします。時にはうまくいくかもしれませんが、それ以外の時はそれはありません。また、Preferences-> Keymapを調べようとしましたが、設定するパラメータが見つかりません。
ここでは、基本的なキー設定が欠落していると思います。 ありがとうございます。
'Ctrl-D 'の組み合わせを押す前に、出力が書き込まれ入力が入力されている「実行」ウィンドウをクリックしましたか?空の行のキーを押しましたか? –
@Someprogrammerdude私は以前もそれをやったことがありますが、私は組み合わせを試し続けます。同じ組み合わせの場合は時々動作し、それ以外の時は動作しません。さまざまなケースがあります:次の行では、動作しません。次の行を実行し、「実行ウィンドウをクリックする」が機能しません。空白を残してから次の行をやっても機能しません。 –