信號EOF在Mac OS X我最近開始學習C++,並已書中加速C++以下。我在第3章,我試圖運行書中給出的程序。我正在使用我的MAC OS上的CLion。代碼如下:如何與克利翁
#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組合鍵之前,您是否在「run」窗口中輸入了輸出並且輸入了輸入內容?你是否按下了空行上的按鍵? –
@Someprogrammerdude我已經做到了前面,但也是我繼續努力的組合。對於相同的組合,它有時會起作用,而其他時間則不起作用。以下是不同的情況:在下一行做,不起作用。做下一行,並「點擊運行窗口」不起作用。留下一個空白區域,然後在下一行進行也不起作用。 –