2017-11-04 2 views
-4

Ich versuche, das Programm so zu programmieren, dass es beendet wird, wenn eine Zahl eingegeben wird, ANDERE als 1 oder 2. Ich kann es erhalten, um eine "Ausgangsmeldung" anzuzeigen, aber das Programm startet neu, anstatt zu beenden. Ich glaube, es kann sein, weil es keine "Rückgabe 0" in der Switch-Standard gibt, aber ich erhielt immer einen Rückgabefehler für void calcit, als ich es einfügte. Ich habe das Gefühl, dass es etwas Einfaches ist, das ich vermisse.Programm mit Standardschalter verlassen?

+1

ist „aber das Programm startet“ Das ist nicht der Fall. Schau mal hier 'do {...} while (true);'. Sie kommen nie aus dieser Schleife heraus, was bedeutet, dass "if (resp! = '1' || resp! = '2')" unerreichbar ist. – DimChtz

Antwort

1

Das Problem mit dem Programm nie endend ist, weil Sie die Schleife do {blah blah....} while (true) haben, die nie endet. Um das zu erreichen, was Sie wollen Sie brauchen eine andere Bedingung:

do { blah blah blah ...} while (resp == '1' || resp == '2'); 
-1

zu beenden Um Ihr Programm bilden sollten Sie Exit-Funktionen anstelle von return 0 verwenden, die Ihre Schleife beenden wird auch brechen würde dir nicht helfen, weil Sie sind im Schalterblock sowie die Do While-Schleife Also, versuchen Sie Ausgang (0); zu beenden, müssen Sie auch die Header-Datei enthalten, dass

#include<cstdlib. h>

+0

'std :: exit' ist in' ', nicht' process.h' (was überhaupt kein Standard-Header ist). Es beendet auch das Programm, ohne den Stapel abzuwickeln, und leckt alle Ressourcen. – Quentin

+0

Danke, dass du mich korrigiert hast, aber ich habe nicht alle Ressourcen geleert, die du gesagt hast –

+0

C++ benutzt RAII, um Ressourcen zu verwalten, und es ist die Rolle von Destruktoren, diese Ressourcen zu befreien. Da 'std :: exit' die Destruktoren von automatischen Variablen nicht aufruft, werden die Ressourcen niemals freigegeben. – Quentin

Verwandte Themen