[C++] Ausgabe soll nach 50ns wieder verschwinden

Mickster

Grünschnabel
Hallo zusammen,
ich versuche gerade einen Gedächnistest zu schreiben bei dem eine Matrix für nur 50 ns angezeigt werden soll. Der Test läuft eigentlich schon leider bleibt die Matrix aber stehen => in dieser Form handelt es sich wohl um einen Sehtest ;-)
bin für hilfe dankbar!
Code:
#include<ctime>
#include<iostream>
#include<conio.h>

int main()
{
    
    int ran[3][3];
	int ranein[3][3];
	int i, j;
	int x;
	clock_t starttime;
    clock_t endtime;
    
	//
	for(i=0;i<3;i++)
	{
		 for(j=0;j<3;j++)
		{
			ran[i][j] = rand();
			std::cout<<ran[i][j]<<" ";
		}
		 std::cout<<std::endl; 
	}

	starttime=clock();

    std::cout<<"Bitte eingeben:"<<std::endl; 
    for(i=0;i<3;i++)
	{
		 for(j=0;j<3;j++)
		{
			 

			 std::cout<<i+1;
			 std::cout<<".";
			 std::cout<<j+1;
			 std::cout<<":";
			 std::cin>>x;
			 ranein[i][j] = x;			
		}
		  
	}

	//Vergleich
	for(i=0;i<3;i++)
	{
		 for(j=0;j<3;j++)
		{
		     endtime=clock();
			 
			 if(ran[i][j]==ranein[i][j]){
				std::cout<<"Rictig  (";
				std::cout<<i+1;
				std::cout<<".";
				std::cout<<j+1;
				std::cout<<")"<<std::endl;
			 }
			 else{
				std::cout<<"Falsch  (";
				std::cout<<i+1;
				std::cout<<".";
				std::cout<<j+1;
				std::cout<<")"<<std::endl;
				
			 }

		}
		  
	}
	std::cout<<"benoetigte Zeit: "<<endtime-starttime<<" Prozessortakte"<<std::endl;
    return 0;
}
 
Hy!

Wenn ich es richtig verstanden habe, und du möchtest das die Matrix am Beginn des Programms verschwindet, musst du einfach zu dem Zeitpunkt, an dem sie verschwinden soll "system("cls");" einfügen, das löscht den Bildschirm.

Ist in der conio.h deklariert

mfg
uhu01
 
Du weiß schon dass die Monitore selten über 100 Hz betrieben werden ? (100 Hz entspricht 1 Bild alle 10ms ). Sprich mit deinen Nannoselkunden wird des wohl nix.
Wenn du willst das der Text verschwindet musst fei auch den Text löschen, sprich du musst die Konsole löschen (cls, oder Elementeüberschreiben mit Leerzeichen)

Die Zeile endtime=clock() machst drei mal, wozu ?

Code Tags verwenden !
 
Sorry,
ich meinte natürlich 50ms, "system("cls ")" ist schon mal ein guter Ansatz, wie kriege ich nur eine genaue Zeitdauer rein. Ich denke das es noch etwas genauer geht als mit einer einfachen Schleife.
 
moin


Wenn du nach den includes
Code:
using namespace std;
einfügst musst du nciht immer std:: schreiben

Außerdem erhällst du mit clock() keine Ergebnisse die mit dem Prozessortakt zu tun haben!


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Hy!

@umbrasaxum:
sollte das nicht
Code:
using namespace std;
heissen? #using ist doch c#, wenn mich nicht alles täuscht.

was clock() dir ausgibt, kannst du aus dem Define CLOCKS_PER_SEC auslesen. Da steht drin wie oft der Wert, den dir clock zurückgibt pro sekunde erhöht. Solltest du clock() jedoch zur Zeitmessung verwenden wollen, wird das nicht ganz funktionieren, da sich clock nur erhöht, wenn dein Programm Prozessorzeit benötigt, d.h. du wirst mit clock nur einen Bruchteil der wirklichen Zeit bekommen

mfg
uhu01
 
moin


Code:
float dauer = (endtime - starttime) / CLOCKS_PER_SEC;

So ermittelst du die Sekunden.
Allerdings gehört clock eher zu den ungenauen Zeitmessungsmethoden.

Wenn du es wirllich genau haben willst benutz timeGetTime. Die Methode ist auf 5ms genau, willst du es noch genauer kannst du einstellen das es noch genuer gemessen werden soll.

@uhu01
Ja hast recht, hatte mich versehen.


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Zurück