2016-12-02 13 views
2

最近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を調べようとしましたが、設定するパラメータが見つかりません。

ここでは、基本的なキー設定が欠落していると思います。 ありがとうございます。

+0

'Ctrl-D 'の組み合わせを押す前に、出力が書き込まれ入力が入力されている「実行」ウィンドウをクリックしましたか?空の行のキーを押しましたか? –

+0

@Someprogrammerdude私は以前もそれをやったことがありますが、私は組み合わせを試し続けます。同じ組み合わせの場合は時々動作し、それ以外の時は動作しません。さまざまなケースがあります:次の行では、動作しません。次の行を実行し、「実行ウィンドウをクリックする」が機能しません。空白を残してから次の行をやっても機能しません。 –

答えて

1

明らかに、実行ウィンドウで「EOF」だけを送信していて、プログラムは毎回問題なく実行されていました。

-1

Macをお使いの場合は、Command()+ Dです。 Windowsを使用している場合は、コントロール(Ctrl)+ です。

「Clion Keymap」(Clionの設定/設定) - > Keymap - > Search EOF、またはKeymap settingsを検索すると、デフォルト設定が表示されます。

+0

私にとってはうまくいかないコマンド+ Dで、プロセスは何とか終了します。 – Tianqing

+0

macOSのEOFはCtrl + Dで、Unixと同じです。 –

0

os x with clionには既知の問題があります。 検索 - >アクションで、run.process.with.ptyを無効にし、それは以下のように動作するはずです:あなたがする必要がどのような

新しい空の行にcmdと+ Dを押すことです。あなたの場合は、宿題を次の空白行に入力し、cmd + dを押します。

関連する問題