Zählen von arithmetischen Operationen und Vergleichsoperationen

Status
Nicht offen für weitere Antworten.

xaja

Mitglied
Hallo,
ich würde gerne in meinem programm meine vergleichsoperationen und arithmetischen Operationen zählen und diese auch auf der console ausgeben. Ich habs auch schon implementiert aber irgendwie bekomme ich da immmer nur null heraus ;( und das kann ja nicht stimmen. Würde mich sehr freuen wenn mir jemand bei meinem weiter helfen könnte.

Code:
public class Fibo {
	
	int aritRecur;
	int vergleicheRecur;
	
	/* Main-Methode zum Testen*/
	public static void main(String[] args) {
		
		/*ITERATIV*/		

		Fibo fiboIter = new Fibo();
		
		long summe = 0;
		int durchlaeufe = 10;
		
		/*Zuweisung über eine Schleife*/
		for (int a = 0; a < durchlaeufe; a++) {
			long startzeit=System.nanoTime();
			fiboIter.fibIterative(30);
			long endzeit=System.nanoTime(); 
			long duration=endzeit-startzeit; 
			summe = summe + (int)duration; 			
		}
		System.out.println("Durchschnitt Iterativ: "+(double)summe/(double)durchlaeufe+" ns");
		
		/*REKURSIV*/
		Fibo fiboRek = new Fibo(); 
		
		long summe1=0; 
		
		for (int a = 0; a < durchlaeufe; a++) {
			long startzeit=System.nanoTime();
			fiboRek.fibRecursive(30);
			long endzeit=System.nanoTime(); 
			long duration=endzeit-startzeit; 
			summe1 = summe1 + (int)duration; 			
		}
		System.out.println("Durchschnitt Rekursiv: "+(double)summe1/(double)durchlaeufe+" ns");
		
		Fibo zähler = new Fibo(); 
		System.out.println(zähler.aritRecur);
		System.out.println(zähler.vergleicheRecur);
		
	}

	/**
	 * Berechnet die n-te Fibonacci-Zahl rekursiv.
	 * 
	 * @param n
	 *            Die zu berechnende Fibonacci-Zahl.
	 * @return Wert der zu berechnenden Fibonacci-Zahl.
	 */
	public int fibRecursive(final int n) {
		
		/*pro Vergleich von n==0 wird der Vergleichsrechner um eins hochgesetzt*/
		vergleicheRecur++; 
		if (n == 0) {
			return n;
		}
		
		/* pro Vergleich von n==1 wird der Vergleichsrechner um eins hochgesetzt*/
		vergleicheRecur++; 
		if (n == 1) {
			return n;
		}
		
		/*Zähler von arithmetischen Operationen wird um drei hochgesetzt, da
		 * (n-1)+(n-2) drei solche Operatoren enthält*/ 
		aritRecur=aritRecur + 3;
		return fibRecursive(n - 1) + fibRecursive(n - 2);
	}

	/**
	 * Berechnet die n-te Fibonacci-Zahl iterativ.
	 * 
	 * @param n
	 *            Die zu berechnende Fibonacci-Zahl.
	 * @return Wert der zu berechnenden Fibonacci-Zahl.
	 */
	public int fibIterative(final int n) {
		int ergebnissFibo=0; 
		
		for (int k=0; k<10; k++) {
			
			int currentFib = 0;
			int nextFib = 1;

			for (int i = 0; i < n; i++) {
				int tmp = nextFib;
				nextFib = currentFib + nextFib;
				currentFib = tmp;
			} 
			ergebnissFibo=currentFib; //return currentFib;
		}
		return ergebnissFibo; 
	}
}

ach ja, kann das mit den Zeiten stimmen das die so deutlich von einander abweichen?
 

Marco13

Top Contributor
Fibo zähler = new Fibo();
System.out.println(zähler.aritRecur);
System.out.println(zähler.vergleicheRecur);

ändern in

//Fibo zähler = new Fibo();
System.out.println(fiboRek.aritRecur);
System.out.println(fiboRek.vergleicheRecur);

Wenn du dort ein neues Fibo-Objekt (zähler) anlegst, sind DAdrin natürlich noch alle Werte 0. Sie wurden ja nur in fiboRek.atriRecur verändert.

Die Werte können dramatisch unterschiedlich sein. Bei der rekursiven Variante wird EXTREM viel doppelt berechnet. Mach' dir mal mit Bleistift und Papier klar, warum das so ist.
 

xaja

Mitglied
danke schön, da hätte man auch von selbst drauf kommen können:oops:
die iterative varianten braucht ja viel mehr als die rekursive variante, dass ist jetzt auch klar und wie kann ich denn meine arithmetischen operatoren und die vergleichsoperatoren für meinen iterativen prozess zählen, könnte mir da mal jemand ne starthilfe geben
 

xaja

Mitglied
also ich habs mal jetzt für den iterativen fall versucht und hab meine neuen sachen mit (NEU EINGEFÜGT) markiert das man es leichter findet. Etwas anderes fällt mir jetzt nicht dazu ein

Code:
public class Fibo {
	
	/*Instanzvariablen*/
	int aritRecur;
	int vergleicheRecur;
	int vergleicheIter;
	int aritIter;
	
	/* Main-Methode zum Testen*/
	public static void main(String[] args) {
		
		/*ITERATIV*/		

		Fibo fiboIter = new Fibo();
		
		long summe = 0;
		int durchlaeufe = 10;
		
		/*Zuweisung über eine Schleife*/
		for (int a = 0; a < durchlaeufe; a++) {
			long startzeit=System.nanoTime();
			fiboIter.fibIterative(30);
			long endzeit=System.nanoTime(); 
			long duration=endzeit-startzeit; 
			summe = summe + (int)duration; 			
		}
		System.out.println("Durchschnitt Iterativ: "+(double)summe/(double)durchlaeufe+" ns");
		
		/*REKURSIV*/
		Fibo fiboRek = new Fibo(); 
		
		long summe1=0; 
		
		for (int a = 0; a < durchlaeufe; a++) {
			long startzeit=System.nanoTime();
			fiboRek.fibRecursive(30);
			long endzeit=System.nanoTime(); 
			long duration=endzeit-startzeit; 
			summe1 = summe1 + (int)duration; 			
		}
		System.out.println("Durchschnitt Rekursiv: "+(double)summe1/(double)durchlaeufe+" ns");
		System.out.println("Anzahl der arithmetischen Operationen\t"+fiboRek.aritRecur);
		System.out.println("Anzahl der Vergleichsoperationen\t"+fiboRek.vergleicheRecur);
		System.out.println("Anzahl der Vergleichsoperationen\t"+fiboIter.vergleicheIter);
		System.out.println("Anzahl der Arithmetischenoperationen\t"+fiboIter.aritIter);
	}

	/**
	 * Berechnet die n-te Fibonacci-Zahl rekursiv.
	 * 
	 * @param n
	 *            Die zu berechnende Fibonacci-Zahl.
	 * @return Wert der zu berechnenden Fibonacci-Zahl.
	 */
	public int fibRecursive(final int n) {
		
		/*pro Vergleich von n==0 wird der Vergleichsrechner um eins hochgesetzt*/
		vergleicheRecur++; 
		if (n == 0) {
			return n;
		}
		
		/* pro Vergleich von n==1 wird der Vergleichsrechner um eins hochgesetzt*/
		vergleicheRecur++; 
		if (n == 1) {
			return n;
		}
		
		/*Zähler von arithmetischen Operationen wird um drei hochgesetzt, da
		  (n-1)+(n-2) drei solche Operatoren enthält*/ 
		aritRecur=aritRecur+3;
		return fibRecursive(n-1) + fibRecursive(n-2);
	}

	/**
	 * Berechnet die n-te Fibonacci-Zahl iterativ.
	 * 
	 * @param n
	 *            Die zu berechnende Fibonacci-Zahl.
	 * @return Wert der zu berechnenden Fibonacci-Zahl.
	 */
	public int fibIterative(final int n) {
		int ergebnissFibo=0; 
		
		aritIter+=3; //Zählt meine Arithmetischenoperatoren				(NEU EINGEFÜGT)
		vergleicheIter++; //Zählt meine Vergleichsoperatoren            (NEU EINGEFÜGT)
		for (int k=0; k<10; k++) {
			
			int currentFib = 0;
			int nextFib = 1;
			
			vergleicheIter++; //Zählt meine Vergleichsoperatoren        (NEU EINGEFÜGT)
			for (int i = 0; i < n; i++) {
				int tmp = nextFib;
				nextFib = currentFib + nextFib;
				currentFib = tmp;
			} 
			ergebnissFibo=currentFib; //return currentFib;
		}
		return ergebnissFibo; 
	}
}
 

Marco13

Top Contributor
Hm. Ich hatte ja was von "raten" gesagt, aber wie du auf die Werte kommst, leuchtet mir noch nicht ganz ein. Wenn eine Schleife läuft wie
Code:
for (int i=0; i<4; i++) { machWas(); }
dann wird da effektiv (nur sinngemäß!) sowas gemacht wie
Code:
int i=0;
if (i >= 4) goto Schleifenende; // Nicht erfüllt
machWas();
i = i + 1;
if (i >= 4) goto Schleifenende; // Nicht erfüllt
machWas();
i = i + 1;
if (i >= 4) goto Schleifenende; // Nicht erfüllt
machWas();
i = i + 1;
if (i >= 4) goto Schleifenende; // Nicht erfüllt
machWas();
i = i + 1;
if (i >= 4) goto Schleifenende; // Erfüllt
...
Schleifendende: // Fertig
Vielleicht hilft das.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
M Häufigkeit von Wörtern zählen Java Basics - Anfänger-Themen 6
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
S Java Methodenaufrufe zählen Java Basics - Anfänger-Themen 4
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
J Methoden Positive Werte zählen Java Basics - Anfänger-Themen 3
H Buchstaben zählen Java Basics - Anfänger-Themen 9
Poppigescorn Häufigkeit einer zahl zählen Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
X Game of Life Nachbarn zählen Java Basics - Anfänger-Themen 20
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
S Binärbäume knoten zählen Java Basics - Anfänger-Themen 16
K Counts zählen Java Basics - Anfänger-Themen 23
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
J Zeichen im String zählen Java Basics - Anfänger-Themen 3
G Binärer Suchbaum Knoten zählen Java Basics - Anfänger-Themen 1
N Zeichen in einem Textfeld zählen und hinterlegen Java Basics - Anfänger-Themen 6
E Knoten eines Baumes unter Bedinung zählen Java Basics - Anfänger-Themen 2
T x Schritte zählen Java Basics - Anfänger-Themen 18
P Schlüsselworte Zählen und Zuweisen von eingelesenen Zahlen Java Basics - Anfänger-Themen 1
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
S Zählen der Zeiger auf Objekte Java Basics - Anfänger-Themen 35
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6
B Array - die Häufigkeit der Zahl zählen Java Basics - Anfänger-Themen 9
L Vorherige Objekte zählen und ausgeben Java Basics - Anfänger-Themen 11
L Diphthonge zählen... Java Basics - Anfänger-Themen 5
O ELOPS Zählen Java Basics - Anfänger-Themen 1
S Rekursives Zählen einer Zahl Java Basics - Anfänger-Themen 8
X Quick Sort - Vergleichsoperationen zählen Java Basics - Anfänger-Themen 0
K alle Vorkommen einer bestimmten Ziffer in einer Zahl zählen Java Basics - Anfänger-Themen 2
B Collections Java Wörter in String zählen und geordnet ausgeben Java Basics - Anfänger-Themen 10
O Großbuchstaben im Satz zählen Java Basics - Anfänger-Themen 6
S zahl hoch und runter zählen per button Java Basics - Anfänger-Themen 25
N Zählen von Rationalen Werten eines Arrays Java Basics - Anfänger-Themen 10
Y for-Schleife zählen Java Basics - Anfänger-Themen 6
K Probleme mit Sortieren und dem Zählen Java Basics - Anfänger-Themen 13
S Vererbung Objekte von Ober - und Unterklassen zählen Java Basics - Anfänger-Themen 3
F SubString in String zählen Java Basics - Anfänger-Themen 3
C Im Array zählen und verändern Java Basics - Anfänger-Themen 5
O Zählen der while-Scheife Java Basics - Anfänger-Themen 3
P bytes aus einem InputStream zählen Java Basics - Anfänger-Themen 2
A Text teilen und Wörter zählen Java Basics - Anfänger-Themen 7
G Erste Schritte Einen Array absuchen und Buchstaben zählen Java Basics - Anfänger-Themen 17
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
D Groß/KleinBuchstaben zählen Java Basics - Anfänger-Themen 21
D Buchstabe zählen/mappen Java Basics - Anfänger-Themen 3
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
M Hilfe bei Zählen von Farben? Java Basics - Anfänger-Themen 7
R Input/Output Tastenschläge einer Taste zählen Java Basics - Anfänger-Themen 14
J Schleifendurchläufe zählen Java Basics - Anfänger-Themen 4
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
E Methoden Methodenaufrufe zählen Java Basics - Anfänger-Themen 11
T Leerzeichen zählen mit Rekursion Java Basics - Anfänger-Themen 17
H Programm zum Zählen von Zeichen Java Basics - Anfänger-Themen 5
K Kommandozeile zählen Java Basics - Anfänger-Themen 5
J Bits zusammen zählen Java Basics - Anfänger-Themen 4
P Hashtabelle-Häufigkeit von String zählen Java Basics - Anfänger-Themen 2
J Array; Vorkommen zählen Java Basics - Anfänger-Themen 10
T durchlaufene while-Schleifen zählen Java Basics - Anfänger-Themen 3
P Replace zählen Java Basics - Anfänger-Themen 4
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
E Zeichen von Kommandozeilenparameter zählen Java Basics - Anfänger-Themen 6
L Objekte zählen mehrerer Unterklassen Java Basics - Anfänger-Themen 3
J Buchstaben aus String einzeln Zählen Java Basics - Anfänger-Themen 12
J Enum zählen Java Basics - Anfänger-Themen 8
M Automatisch hoch zählen Java Basics - Anfänger-Themen 8
S Zählen Java Basics - Anfänger-Themen 9
V Arraylist: Zählen welcher String am Häufigsten vorkommt Java Basics - Anfänger-Themen 5
A Erste Schritte Datei einlesen und Buchstaben zählen Java Basics - Anfänger-Themen 13
M Von File lesen Buchstaben lesen und zählen - scheitert an der Eingabe Java Basics - Anfänger-Themen 4
B Zählen bestimmter Zeilen einer .txt Java Basics - Anfänger-Themen 7
A Satzeingabe - Vokale zählen Java Basics - Anfänger-Themen 5
G Gleiche Elemente in Feld zählen Java Basics - Anfänger-Themen 13
B Input/Output Wörter zählen & sortieren Java Basics - Anfänger-Themen 9
S Buchstaben/Wörter im String zählen Java Basics - Anfänger-Themen 6
K apache poi - Spalten zählen Java Basics - Anfänger-Themen 4
T Methodenaufrufe zählen Java Basics - Anfänger-Themen 24
L Array Sequent Zählen Java Basics - Anfänger-Themen 8
N Bestimmte Zeichen aus Strings zählen Java Basics - Anfänger-Themen 11
C Boolean Wahrheitswert zählen Java Basics - Anfänger-Themen 15
C Vorkommen eines Zeichens zählen Java Basics - Anfänger-Themen 4
D Game of Life - Nachbarn zählen Java Basics - Anfänger-Themen 8
J Buchstaben zählen Java Basics - Anfänger-Themen 17
R buchstaben zählen Java Basics - Anfänger-Themen 8
D Zählen von Umlauten in einem String Java Basics - Anfänger-Themen 4
E Array Inhalte zählen Java Basics - Anfänger-Themen 6
B Strings zählen Java Basics - Anfänger-Themen 15
Z Zeichen Zählen Java Basics - Anfänger-Themen 3
B Files aus Verzeichnis zählen Java Basics - Anfänger-Themen 9
J Wörter in einem string zählen und die anzahl zurückgeben Java Basics - Anfänger-Themen 4
I Zeichen zählen ohne Leerzeichen Java Basics - Anfänger-Themen 3
M Blätter eines Baumes zählen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben