2016-06-10 9 views
-1

Ich bin unabhängig lernen C++ mit der zweiten Ausgabe von "Programming Principles and Practice Using C++" von Bjarne Stroustrup. Ich habe das Ende von Kapitel 3 erreicht und führe die Übung durch. Es beinhaltet das Schreiben eines Programms, das einen "einfachen Formbrief basierend auf Benutzereingaben" erzeugt.Unterstützung mit C++ simple_error()

Die Aufgabe für Schritt 5 dieses Bohrers ist als (zitiert Wort für Wort) folgt:

Prompt the user to enter the age of the recipient and assign it to an int variable age. Have your program write "I hear you just had a birthday and you are age years old." If age is 0 or less or 110 or more, call simple_error("you're kidding!") using simple_error() from std_lib_facilities.h.

unter meiner Syntax Siehe:

cout << "\n\nEnter the age of " << first_name << ":\n"; 
int age; 
cin >> age; 
cout << " I heared you just had a birthday and you are " << age << " years old. \n\n"; 
if (age <= 0 || age >= 110) 
    simple_error("you're kidding!"); 

Ist meine Verwendung der 'if' Anweisung , sind die Bedingungen und simple_error() korrekt gemäß den Anweisungen von Schritt 5?

Es scheint seltsam, weil der Zweck des Programms ist, einen Brief zu schreiben und simple error("you're kidding!") Ausgaben "Fehler: du machst Witze!" in dem Brief ... soll ich das so wörtlich nehmen?

Ich schätze wirklich Ihre Zeit und Ratschläge.

+0

Funktioniert es, wenn Sie es versuchen? – NathanOliver

+0

@NathanOliver ja, die Ausgabe ist korrekt, soweit die if-Anweisung geht. Aber ist simple_error ("Du machst Witze!") Soll "Fehler: Du machst Witze!" Dies ist das erste Mal, dass simple_error() erwähnt wurde. – TheWolfTyrant

+0

Simple_error() wird "Fehler" vor jeder Fehlermeldung gedruckt, die Sie als Parameter übergeben haben. Ihr Code sieht für mich gut aus und Ihre if-Anweisung ist korrekt. Schwitzen Sie also nicht den "Fehler" -Teil. Du könntest simple_error() durch cout ersetzen, wenn du den "error" -Teil weg hast. – StaticBeagle

Antwort

1

Ihr Programm scheint dem Drill zu folgen.

Soweit der Bohrer geht, will es einfach:

if (age <= 0 || age >= 110) 
    simple_error("you're kidding!"); 

Wie das Programm verhält sich darüber hinaus, dass für den Bohrer aus Anwendungsbereich ist, sollten Sie nicht darum kümmern, wie es den Text formatiert. Stellen Sie nur sicher, dass es kompiliert und was Sie geschrieben haben, funktioniert wie beabsichtigt.

0

Wenn Sie die Definition von simple_error() von std_lib_facilities.h

// error function to be used (only) until error() is introduced in Chapter 5: 
inline void simple_error(string s) // write ``error: s`` and exit program 
{ 
    cerr << "error: " << s << '\n'; 
    keep_window_open();  // for some Windows environments 
    exit(1); 
} 

Der Fehler sehen soll cerr (Standardfehler-Stream) gehen. Standardmäßig werden alle Standardfehler auf die Standardausgabe umgeleitet.

Wenn Sie nicht möchten, dass die Fehlermeldung in dem Brief, den ich glaube, Sie sind besorgt über, können Sie Ihre Standardfehler, zum Beispiel direkt in eine Datei auf * nix-Systemen wie

./a.out 2>> error_file 

Dabei steht 2 für den Standardfehlerstrom.

Soweit der Bohrer geht Ihr Programm korrekt.