C++ (Konsole) eine mehrstellige Zahl löschen
-
Ausprobieren, begreifen, umbauen, einbauen:

#include <iostream> #include <time.h> using std::cout; using std::endl; void sleep( clock_t wait ) { clock_t goal; goal = wait + clock(); while( goal > clock() ) ; } int main() { int i = 1100; while(i) { cout.width(10); cout << i--; for(int j=0;j<10;++j) cout << '\b'; sleep(10); } cout << endl; std::cin.get(); return 0x0; }
-
_matze schrieb:
Ausprobieren, begreifen, umbauen, einbauen:

#include <iostream> #include <time.h> using std::cout; using std::endl; void sleep( clock_t wait ) { clock_t goal; goal = wait + clock(); while( goal > clock() ) ; } int main() { int i = 1100; while(i) { cout.width(10); cout << i--; for(int j=0;j<10;++j) cout << '\b'; sleep(10); } cout << endl; std::cin.get(); return 0x0; }Danke _matze. Habe es ausprobiert und auch verstanden. Ich habe es jetzt jedoch so gemacht:
while(sek >= 0) { cout << setw(2); cout << sek--; for(int i = 0; i <= 1; i++) cout << "\b"; Sleep(1000); }Danke natürlich auch an alle anderen!!!
-
Wenn du immer zum Zeilenanfang zurück willst kannst du auch einfach ein einzelnes
\rausgeben.
-
hustbaer schrieb:
Wenn du immer zum Zeilenanfang zurück willst kannst du auch einfach ein einzelnes
\rausgeben.Danke, dasss weiß ich bereits. Werde es irgendwann mal gebrauchen

-
In C/C++ schreibt man bei den Abbruchbedingungen üblicherweise nur das < (statt <=) dann kann man die Anzahl der Durchläufe sehr einfach erkennen:
for(int i = 0; i < 2; i++)\\ 2 DurchläufeAllerdings kannst du auch gleich die zwei \b direkt ausgeben.
(aber der Compiler wird das eh optimieren)
-
DirkB schrieb:
In C/C++ schreibt man bei den Abbruchbedingungen üblicherweise nur das < (statt <=)
Also ich finde, das ist eigentlich reine Geschmackssache. Manchmal mach ich es so, manchmal aber auch anders

-
DirkB schrieb:
In C/C++ schreibt man bei den Abbruchbedingungen üblicherweise nur das < (statt <=) dann kann man die Anzahl der Durchläufe sehr einfach erkennen:
Im Prinzip ja. Nur schreibt man in C++ zunehmend != statt < und es gibt kein C/C++ (Beweis: Deine Vermutung.)
-
Genau. Es gibt nur C und C++. Kurz: C+C++!

-
#include <iostream> #include <time.h> void mysleep( clock_t wait ) { clock_t goal; goal = wait + clock(); while( goal > clock() ) ; } int main() { using std::cout; using std::endl; using std::flush; int i = 1100; while(i) { cout.width(10); cout << i--; cout<<flush;//Ohne irgend do ein flush springt der cursor schlimm mysleep(10); for(int j=0;j<10;++j) cout << '\b'; } cout << endl; std::cin.get(); return 0x0;//Scherzkeks. }Aber warum das umständliche '\b'?
Üblicher ist '\r'.while(i) { cout << '\r' ; cout.width(10); cout << i-- << flush; mysleep(10); }Wobei ich mich auch nicht um width kümmere, sondern
while(i) { cout << '\r' << i-- << ' ' << flush; mysleep(10); }, sowas sind ja nur mehr oder weniger Debug-Ausgaben.
-
volkard schrieb:
DirkB schrieb:
In C/C++ schreibt man bei den Abbruchbedingungen üblicherweise nur das < (statt <=) dann kann man die Anzahl der Durchläufe sehr einfach erkennen:
Im Prinzip ja. Nur schreibt man in C++ zunehmend != statt < und es gibt kein C/C++ (Beweis: Deine Vermutung.)
OK.
Aber das Printip bleibt, man sieht die Anzahl besser als beim <=