|
You last visited: Today at 16:31
Advertisement
[C++] Taschenrechner neustarten
Discussion on [C++] Taschenrechner neustarten within the C/C++ forum part of the Coders Den category.
09/23/2013, 20:48
|
#1
|
elite*gold: 149
Join Date: Feb 2010
Posts: 1,298
Received Thanks: 346
|
[C++] Taschenrechner neustarten
Hey,
ich habe eine Konsolenanwendung mit C++ geschrieben. Der Taschenrechner kann die Grundrechenarten und ein paar andere Funktionen aber das ist auch nicht das Hauptthema.
Wenn ich eine Funktion wähle (z.b Multiplizieren) dann rechnet er. Am Ende der If-Anweisung habe ich system("pause") und return 0, also beendet er nach jeder Rechenart das Programm. Dies möchte ich aber ändern.
Ich möchte das wenn man, z.b Multiplizieren, ausgeführt hat das Programm sozusagen "neustartet" also von Anfang an beginnt und man wieder im Menü bei den Rechenarten ist wo man auswählen kann.
Dies soll mit einer Abfrage nach der Rechenart passieren. Also wenn man gerechnet hat soll eine Abfrage kommen: "Zum beenden J drücken, um wieder ins Menü zu gelangen N drücken."
Ich habe gehört das dass mit eine while-Schleife funktionieren würde, leider habe ich keine Ahnung wie genau das geht und hoffe einfach das ihr mir helfen und Beispiele geben könnt.
Danke schonmal.
Gruß
Critone
|
|
|
09/23/2013, 22:09
|
#2
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Code:
do
{
// ...
} while (!MoechteUserBeenden());
|
|
|
09/24/2013, 16:42
|
#3
|
elite*gold: 149
Join Date: Feb 2010
Posts: 1,298
Received Thanks: 346
|
Versteh ich nicht ganz, sorry :/ kannst du das vielleicht erklären?
|
|
|
09/24/2013, 17:18
|
#4
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
In die Funktion MoechtUserBeenden kommt dann etwa sowas rein:
Code:
bool MoechteUserBeenden()
{
char input = 'n';
std::cout << "Wollen Sie nochmal rechnen? j/n: ";
std::cin >> input;
return input == 'n';
}
Dann musst du nur noch in die Schleife dein eigentliches Rechenprogramm packen und schon kann man nach jeder abgeschlossenen Rechnung wählen, ob man weiter machen will.
|
|
|
09/24/2013, 17:36
|
#5
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Code:
char DoStop;
do
{
printf("Beenden? ");
scanf("%c", &DoStop);
while (getchar() != '\n') { ; }
} while(DoStop == 'n');
C++ musste selber machen mit cout/cin...
EDIT:
ich sollte vllt öfter mal aktualisieren, da war jacky919 schneller - 20 minuten :/
|
|
|
09/26/2013, 11:13
|
#6
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Mach entweder eine While 1==1 Schleife drum oder nimm (die schlechtere Variante) Sprungmarken:
Code:
Sprungmarke:
// Hier wird gerechnet
goto Sprungmarke;
|
|
|
09/26/2013, 14:13
|
#7
|
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
|
Quote:
Originally Posted by alpines
Mach entweder eine While 1==1 Schleife drum oder nimm (die schlechtere Variante) Sprungmarken:
Code:
Sprungmarke:
// Hier wird gerechnet
goto Sprungmarke;
|
Ernsthaft? Du empfiehlst ihm goto? Und dann auch noch bei dem denkbar schlechtesten Anwendungsbeispiel? Wow, einfach nur wow...
|
|
|
09/26/2013, 14:40
|
#8
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Für goto gibt eigentlich kein gutes Anwendungsbeispiel. Das einzige was mir einfällt: Wenn man aus ner x-fach verschachtelten Schleife will (wobei ich da ein flag benutzen würed, dass man einfach abfragt).
|
|
|
09/26/2013, 15:13
|
#9
|
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
|
goto sollte auf JEDEN Fall vermieden werden, da alles was zwischen einem Sprung initialisiert wird nie freigegeben wird. Es wird kein stack-unwinding gemacht. Genauso wie bei setjmp und longjmp.
|
|
|
09/26/2013, 17:44
|
#10
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Ich sagte doch das es die schlechtere Variante ist, man sollte schon lesen können.
Es ist eine Möglichkeit, natürlich sollte es wenns geht vermieden werden aber trotzdem sollte man ihm die Entscheidung nicht nehmen, und das ist eine Möglichkeit wie man es machen kann nicht muss.
|
|
|
09/26/2013, 21:19
|
#11
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Es hat Vorteile, die schlechten Teile einer Sprache gar nicht erst mit zu lernen.
|
|
|
09/27/2013, 02:01
|
#12
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
na, man sollte alle teile einer sprache lernen, so hat man für jede situation die beste lösung bei hand und kann u.U. auch direkt den code von anderen leuten verstehen, die vllt. nicht so "sauber" arbeiten.
|
|
|
09/27/2013, 16:11
|
#13
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Mit den schlechten Teilen bekommt man aber keine guten Lösungen.
Das Verstehen ist vielleicht noch ein Argument.
Ich dachte auch bis vor einiger Zeit, dass man eine Sprache vollständig lernen sollte, aber eigentlich ist das Unsinn. Auch Sprachdesigner machen Fehler und bauen Features ein, die man niemals nutzen sollte. Von denen kann man zwar wissen, aber zu lernen, wie man sie anwendet, ist verschwendete Zeit und verursacht schlimmstenfalla noch, dass man sie sich aneignet (wenn man nicht von Anfang an um ihre Probleme weiß). Das kostet dann gleich doppelt Zeit, weil man sie sich wieder abgewöhnen darf.
Lange Rede, kurzer Sinn: Einem Anfänger goto, und sei es auch nur mit Einschränkung, zu empfehlen, ist absolut hirnrissig.
|
|
|
09/27/2013, 16:44
|
#14
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
empfehlung aufjedenfall schwachsinn, aber wissen sollte mans trzd. imo
|
|
|
10/06/2013, 15:04
|
#15
|
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,446
|
Warum so "kompliziert?"
Code:
#include <string.h>
string bes = "ja";
while( bes == "ja" )
{
....
std::cout << "Wiederholen?" << std::endl;
std::cin >> bes;
}
|
|
|
 |
|
Similar Threads
|
Taschenrechner
07/23/2012 - C/C++ - 11 Replies
Hallo, ich bin ein noch ziemlicher Anfänger in C++. Heute habe ich einen Taschenrechner programmiert( er kann nur zwei zahlen bearbeiten). :
#include <iostream>
using namespace std;
int Zahl1, Zahl2, Eingabe, Ergebnis;
char Antwort;
int main()
{
|
[B]Taschenrechner[S]26k EG
10/13/2011 - elite*gold Trading - 18 Replies
http://www.elitepvpers.com/theblackmarket/treasure /66318
Treasure oben ;)
Wer kauft bekommt PN mit link.
Screens gibts auch nicht ;)
Was kann der Taschenrechner?
Plus und minus rechnen!
|
[VC++] Taschenrechner mit GUI
07/08/2011 - C/C++ - 3 Replies
Hey Leute
also ich bin noch ein ziemlicher Anfänger in C++ und bin grad dabei, einen Taschenrechner zu erstellen. Er soll eben ne Oberfläche haben und nicht als Konsolenanwendung abgespielt werden. Ich hab jetzt ein Textfeld, 0-9 Buttons als Ziffern und die Rechenarten. Dann noch "Berechnen" und "Löschen", damit das Textfeld geleert wird und man von neu rechnen kann.
Nun zu meiner Frage.
Mit welchem Befehl erreiche ich, dass die Zahl, sobald ich sie anklicke, im Textfeld erscheint?
|
Taschenrechner Buttons
06/08/2011 - AutoIt - 6 Replies
hi
ich wollte grad nen taschenrechner programmieren, aber irgendwo is nen fehler^^
bei case 2,3 und 4 steht absichtilich noch nichts.
kann mir einer dann auch gleich schreiben wies richtig wäre? wäre nett :)
#include <GUIConstants.au3>
|
[HELP]Taschenrechner
03/09/2011 - AutoIt - 2 Replies
Also ich wollte nen kleinen Taschenrechner Skripten. Hab jz ein Problem.
Undzwar soll in die hinterste Inputbox der Zeile das Ergebnis angezeigt werden. Wie kann ich das machen?
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
;------------------------------------------------ ----GUI---------------------------------------
|
All times are GMT +1. The time now is 16:33.
|
|