J'ai récemment commencé à apprendre le C++ et j'ai suivi le livre Accelerated C++. Je suis sur le chapitre 3 et j'ai essayé d'exécuter le programme donné dans le livre. Je travaille sur CLion sur mon MAC OS. Le code est le suivant:Comment signaler EOF sur MAC OS X avec 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;
}//
Le programme compile bien et je peux entrer le nom et aussi les catégories. Mais alors quand je presse Ctrl + D (qui est l'EOF confirmé à partir du terminal, également suggéré ici How to signal EOF of stdin when in mac osx terminal?) ou Cmd + D (comme suggéré aussi).
Lorsque j'appuie sur Ctrl + D, le programme redémarre. En appuyant sur Cmd + D, il a un comportement inhabituel. Il peut parfois fonctionner, et d'autres fois, il ne fonctionne pas. J'ai également essayé de regarder dans le Preferences-> Keymap mais je ne peux pas trouver quel paramètre mettre.
Je pense qu'il me manque des paramètres de touches vraiment basiques ici. Nous vous remercions de votre aide.
Avez-vous cliqué dans la fenêtre "Exécuter", où la sortie est écrite et l'entrée est entrée, avant d'appuyer sur la combinaison "Ctrl-D"? Avez-vous appuyé sur les touches d'une ligne vide? –
@Someprogrammerdude Je l'ai fait plus tôt aussi mais je continue d'essayer des combinaisons. Pour la même combinaison, cela fonctionne parfois, et d'autres fois non. Voici les différents cas: Faire sur la ligne suivante, ne fonctionne pas. Faire sur la ligne suivante, et "cliquant sur la fenêtre d'exécution" ne fonctionne pas. Laisser un espace vide et ensuite faire sur la ligne suivante ne fonctionne pas non plus. –