NO0b kommt...;)again;)
-
newkid_ schrieb:
THE_FreaK schrieb:
und um sone quick'n'dirty lösung zu vermeiden gibts den EIntrag in der FAQ (link siehe oben)
4. was soll ausserdem grossartiges passieren? die variable wird doch freigegeben und das wars. wo sind da also die nachteile fürs OS ?
Was ist wenn noch Zeichen im Input-Puffer stehen? Dann bewirkt diese Anweisung wirklich großartiges... :p
Deswegen (ich wiederhole mich zwar ungern aber was solls) siehe besser die Win32 und Konsolen-FAQ. (Direkter Link zum Thread wurde bereits zweimal gepostet).
Caipi
-
Caipi schrieb:
Was ist wenn noch ein '\n' im Input-Puffer steht? Dann bewirkt diese Anweisung wirklich großartiges... :p
Caipi
oder was ist wenn nachdem im puffer der code eines üblen wurms anfängt
oder der code zu einer maschine die aus gülle gold herstellen kann
-
newkid_ schrieb:
oder was ist wenn nachdem im puffer der code eines üblen wurms anfängt
oder der code zu einer maschine die aus gülle gold herstellen kannWarum so Aggresiv?
Ist das so utopisch wie ein Wurm?
Desweiteren habe ich mich in meinem Posting auf was du dich jetzt bezogen hast falsch ausgedrückt, ich meinte nicht '\n' sondern allgemein ein Zeichen, welches ungleich einem Blank ist
Caipi
-
nächste version(funktioniert immer noch nicht... :
#include <iostream> using namespace std; void wait() { cin.clear(); cin.ignore(std::cin.rdbuf()->in_avail()); cin.get(); } short x = 0; int main() { cout << " Bitte gib einen Wert ein: "; cin >> x; if (x == 100 || x == 200 || x == 300 ) { cout << " x = " << x << '\n'; x = x*4; } else if (x >= 100 || x <= 110) { cout << " x = " << x << '\n'; x = 400; } else { cout << " x = " << x << '\n'; x = 0; } return 0; }
und es geht nicht darum das wenn ich es ausführe es sofort weider schließe, sondern das es sich erst schließt nachdem das erste cout ausgeführt wurde und ich den wert für x eingegebne habe...
-
und es geht nicht darum das wenn ich es ausführe es sofort weider schließe, sondern das es sich erst schließt nachdem das erste cout ausgeführt wurde und ich den wert für x eingegebne habe...
Heißt das, dass du das Ergebnis von x nicht mehr angezeigt bekommen möchtest? Dann lass es so...
Ansonsten musst du die wait-Funktion schon aufrufen
Caipi
-
#include <iostream> using namespace std; void wait() { cin.clear(); cin.ignore(std::cin.rdbuf()->in_avail()); cin.get(); } short x = 0; int main() { cout << " Bitte gib einen Wert ein: "; cin >> x; if (x == 100 || x == 200 || x == 300 ) { cout << " x = " << x << '\n'; x = x*4; wait(); } else if (x >= 100 || x <= 110) { cout << " x = " << x << '\n'; x = 400; wait(); } else { cout << " x = " << x << '\n'; x = 0; wait(); } return 0; }
Wenn der Thread noch weitergeht wird mir schlecht
.
-
gegen wait habe ich was.
wenn schon auf nen tastendruck gewartet werden muss (was ich für völlig nutzlos halte, starte das prog doch aus der konsole!), dann auf keinen fall so, daß man es überhaupt nicht mehr durch eingabeumleitung fernsteuern kann.
-
volkard schrieb:
gegen wait habe ich was.
wenn schon auf nen tastendruck gewartet werden muss (was ich für völlig nutzlos halte, starte das prog doch aus der konsole!), dann auf keinen fall so, daß man es überhaupt nicht mehr durch eingabeumleitung fernsteuern kann.jep ersten das
und 2tens
@steff3
was bist du für ein programmierer/in ???
Will ja nichts sagen aber beisowas wird MIR schlecht. Da nützt dir dann der rote kopf auch nichts. du hast die fkt wait die in jedem case aufgerufen wird
dann schreib ( da es ja auf jeden fall gemacht werden soll ) doch bitte am schluss hin. sowas lernt mal eigentlich gleich am anfang beim thema funktionen
-
Sind If und Else-Zweige Funktionen ? Das die Funktion main nach dem beenden der Bedingungen weiter geht ist mir bekannt. Aber hat es jemanden geschadet, dass in jder klausel die Funktion aufgerufen wird?!? - nein
Und im übrigen mache ich das immer so, bei mir heißt das Übersicht.
-
steff3 schrieb:
Und im übrigen mache ich das immer so, bei mir heißt das Übersicht.
bei mir heisstd as unübersichtlich.
-
steff3 schrieb:
Sind If und Else-Zweige Funktionen ? Das die Funktion main nach dem beenden der Bedingungen weiter geht ist mir bekannt. Aber hat es jemanden geschadet, dass in jder klausel die Funktion aufgerufen wird?!? - nein
Und im übrigen mache ich das immer so, bei mir heißt das Übersicht.???
kannst du deutsch? ich sagte nicht, das if else fkt sind!ich meinte mit fkt das hier --> wait();
das ist überall drinnen. normalerweise rufst du das vorm return 0; auf! das ist übersichtlich
ausserdem
Aber hat es jemanden geschadet, dass in jder klausel die Funktion aufgerufen wird?!?
Das ist falsch. die fkt KANN nur in einem zweig aufgerufen, es wird nicht in jedem aufgerufen. aber egal.
naja schreib deinen unübersichtlichen code, wenn dein arbeitgeber nichts dagegen hat und es dir spass macht
-
@steff3
also wenn, dann auch bitte konsequent:
#include <iostream> using namespace std; void wait(); void foo(); void bar(); int main() { cout << " Bitte gib einen Wert ein: "; cin >> x; if ( do ) { cout << " x = " << x << '\n'; x = x*4; wait(); foo(); bar(); return 0; } else if ( someStuff) { cout << " x = " << x << '\n'; x = 400; wait(); foo(); bar(); return 0; } else { cout << " x = " << x << '\n'; x = 0; wait(); foo(); bar(); } } // anderes zeugs wie die wait implementation
-
Das ist mir schon klar das die Funktion nicht...
Das ist falsch. die fkt KANN nur in einem zweig aufgerufen, es wird nicht in jedem aufgerufen. aber egal.
es geht darum, dass für jede Klausel ein ordentlicher Abschluss gefunden wird.
kannst du deutsch?
Vorsicht
! Soll ich deine Fehler korrigieren?
Mehr als Satzanfänge schreibst du ja nicht groß.
-
steff3 schrieb:
Mehr als Satzanfänge schreibst du ja nicht groß.
1. ich sagte nicht
kannst du deutsch, und meinte rechtschreibung, sondern TEXTVERSTÄNDIS
2. ich sage es hier im forum gerne 1000 mal wieder
ich halte mich in mails und in foren nicht an den DUDEN!!!!
nur bei öffentl und bei geschätsschriftverkehr, sonst nicht! lass mir doch von einem herrn duden und das jetzige gremium nichts vorschreiben
so jetzt weisst du es auch
aber, ja textverstädnis habe ich meistens ( ausser ich bin grad dicht/müde/unaufmerksam )
so ich sag jetzt nichts mehr dazu
ausser
wait();
wait();
wait();
wait();
wait();
wait();
wait();
-
steff3 schrieb:
Das ist falsch. die fkt KANN nur in einem zweig aufgerufen, es wird nicht in jedem aufgerufen. aber egal.
es geht darum, dass für jede Klausel ein ordentlicher Abschluss gefunden wird.
dies ist schlechter stil, mehr nicht. dass solche funktionen am ende eines programmes stehen hat einen sinn.
Beispiel: irgendwann willst du eine schleife drum bauen, die es ermöglicht, dass der user immer wieder das programm durchlaufen kann, wenn du das hier tust, stört das wait() automatisch den programmfluss, da an der stelle nicht mehr das ende des programms ist-> du musst diesen programmteil umschreiben.
Die Stilentwicklung geht aber immer mehr zu wiederverwendbaren codefragmenten, das heisst immer weiter voranschreitender modularisierung. Mit deiner Einstellung landest du vom Stil her automatisch irgendwann in einer Sackgasse, denn es ist cool, wenn man eine funktion aus einem anderen projekt direkt wiederverwenden kann ohne etwas umschreiben zu müssen.
Auch kannst du einzelne Teile des programms leichter austauschen, eine andere eingabe oder ausgabe ist ganz schnell implementiert.
Ein Beispiel dafür: vielleicht wirst du irgendwann für eins deiner consolen programme ein gui interface schreiben, mit editfeldern buttons und labeln. Wenn du so programmierst wie wir es dir vorschlagen, wirst du nur einen kleinen codeteil ändern müssen, nämlich ganz am ende die Ausgabe. Im idealfall ersetzt du dann nur eine Funktion.
Wenn aber überall im Code so spezifische Sachen wie wait und cout drinstehen kannst du den Code nicht für die GUI verwenden sondern musst alles umschreiben.