Hilfe bei 3 Aufgaben in Programmiersprache C
-
Hallo Liebe Leute,
mein Name ist Dennis und ich Studiere zur Zeit Informatik und bin im 3. Semester. Für das fach Echtzeitsysteme muss ich eine Hausabreit machen, ich habe schon viele Aufgaben selber gelöst und die auch richtig waren, nur komme ich bei den folgenden 3 Aufgaben überhaupt nicht zurecht. Kennt sich jemand von euch vielleicht damit aus und kann mir die lösungen sagen. Es geht hier um eine Vorleistung und ich muss diese 3 aufgaben so schnell wie möglich dem profressor abgeben nur komme ich gar nicht weiter, wäre echt nett wenn mir jemand dabei helfen könnte....
Aufgabe: Schreiben Sie ein weiteres Programm, das eine Stoppuhr mit Sekunden und
Millisekunden realisiert. Es soll die Zeit zwischen zwei Tastendrücken messen.Aufgabe: Schreiben Sie ein Programm, das jede Sekunde, halbe Sekunde, 100ms, 10ms, 1ms die Zeit ausgibt. Welche Möglichkeiten gibt es dafür ? Was können Sie beobachten ?
Schreiben Sie ein Programm, das die Zeit für 100 000 000 Additionen berechnet. Verwenden Sie dafür die Ergebnisse des letzten Aufgabenblattes („Stoppuhr“).
Führen Sie das Programm mehrfach aus. Was beobachten Sie ?
a) Addieren Sie 2 Integer Zahlen
b) Addieren Sie 2 float ZahlenLG
Dennis
-
Hallo,
und warum postest du dann im falschen Unterforum? (hier ist C#/.NET, nicht C)
Und welche Funktion zum Zeitmessen benutzt ihr?
Für (reines) C kenne ich nur http://www.cplusplus.com/reference/clibrary/ctime/clock/
-
Erstmal: Für C bist du hier falsch, das ist zwei Etagen höher.
Zweitens: Zur Zeitmessung empfiehlt sich man: clock(3).
-
Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Zur Zeitmessung bietet sich die <time.h> an, welche unter anderem die bereits genannte Funktion clock() deklariert. clock() gibt die Anzahl der vergangenen "Ticks" seit dem Programmstart zurück. Auf Windows Systemen löst clock() meiner Erfahrung nach immer in Millisekunden auf. Wenn du standardkonform bleiben musst, kannst du die vergangenen Millisekunden durch (clock() * 1000) / CLOCKS_PER_SEC errechnen. Die Konstante CLOCKS_PER_SEC wird dir hierbei von <time.h> bereitgestellt.
Es soll die Zeit zwischen zwei Tastendrücken messen.
Mit Standard-C geht das wohl nur zwischen zwei Entertasten
-
Für die Zeitmessung wär wohl das einfachste:
long double dbKeyPressTime = 0; while( 1 ) { if( GetAsyncKeyState( VK_NUMPAD1 ) ) dbKeyPressTime = GetTickCount( ); else if( GetAsyncKeyState( VK_NUMPAD2 ) && dbKeyPressTime ) { printf( "Time between keypresses: %f\n", (GetTickCount( ) - dbKeyPressTime) / 1000 ); dbKeyPressTime = 0; } Sleep( 10 ); }
Fallste es genauer haben möchtest evt. an den Divisor arbeiten oder sich mit QueryPerformanceFrequency beschäftigen. Code eigentlich C++, weiß nicht ob man bei printf irgendwie noch die Nachkommastellen einstellen kann.
Edit: Wegen dem Programm, dass alle XXms die Zeit ausgeben soll. Welche Zeit? Relative Zeit, oder unsere "echte" Zeit? Kannst schonmal schreiben, dass du beobachtet hast, dass Windows nur alle 16ms aktuallisiert und daher 1ms viel zu schnell ist.
-
Beaving schrieb:
[...] epic fail!?
Dir ist aber schon klar, dass das hier das C Forum ist?
@TE vergiss das und nimm clock();