[B] Code für Countdown

01/24/2014 19:34 FaYoGaming#1
Ich biete euch hier den Code für einen Countdown an.
Dieser Zählt von der angegebenen Zeit(in Minuten) bis auf 0 runter.

Hier der Code:

Code:
#include <iostream>
#include <Windows.h>

using namespace std;

int sek = 60;
int zeitinmin;
int milisek = 10;

int main()
{
	cout << "------------Countdown Timer by FaYoGaming------------" << endl << endl;
	cout << "Gib deine Zeit an: ";
	cin >> zeitinmin;
	zeitinmin -= 1;
	for(;;)
	{
		if(milisek == 0)
		{
			sek -= 1;
			milisek = 10;
		    cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNoch: " << zeitinmin << " Minuten und " << sek << " Sekunden";
		}
		if(sek == 0)
		{
			zeitinmin -= 1;
			sek = 60;
		}
		if(zeitinmin == 0 && sek < 2)
		{
			Sleep(1000);
			sek -= 1;
			cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNoch: " << zeitinmin << " Minuten und " << sek << " Sekunden";
			cout << "\nSTOP!!" << endl;
			getchar();
			break;
		}
		milisek -= 1;
		Sleep(100);
	}
	getchar();
	return 0;
}
wenn der Code euch weiterhilft lasst ein Thanks da ^^

//Edit Wenn ihr wollt kann ich den Code auch so bearbeiten das Leute die kein C++ können diesen lesen können. Ich würde dann immer Kommentare dahinter schreiben
Code:
//Kommentar
01/24/2014 19:38 Dr. Coxxy#2
gehört hierhin:
[Only registered and activated users can see links. Click Here To Register...]

außerdem potentiell extrem ungenau, da Sleep(100) nicht unbedingt exakt ist, der code dazwischen auch zeit verbraucht und sich wie da bei mehrmaliger benutzung der fehler kumulieren kann.
01/24/2014 19:39 FaYoGaming#3
Habe den Code sehr oft schon benutzt bis jetzt hat immer alles perfekt geklappt ^^
01/24/2014 19:55 Dr. Coxxy#4
using namespace std ist böse (google).
wenn du mal nen highfrequency timer benutzt (winapi, msdn hilft hier), wirste sehen, dass ein Sleep(100) nicht 100 ms braucht, sondern z.b. bei mir gerade ~99ms., bzw. zwischen 99400 und 99800 microsekunden.
wenn dieser sleep so eine abweichung von ~0.5ms pro 100ms hat, hast du nach 10 minuten schon eine abweichung von 3000ms, also 3 sekunden.

Für so etwas ist gettickcount bzw. ein windows timer sehr viel besser geeignet, wenn du am ende mit ner abweichung von ~20ms zurechtkommst.
ansonsten halt ein highfreq hardware timer, damit kriegste auflösungen im micro bis nanosekunden bereich hin.
01/25/2014 00:23 Delinquenz#5
Anstatt viele \n's kannst du auch ein \r benutzen. Damit überschreibst du die vorherige Zeile.
01/25/2014 02:28 MrSm!th#6
[Only registered and activated users can see links. Click Here To Register...]

#closed