2
2Stoned
Fortgeschrittenes Mitglied
- 13
Grüäzi Wohl
Vielleicht kann mir jemand kurzerhand auf die Sprünge helfen.
Ich wollte ein kleines App schreiben, welches die Collatz-Folgen der Zahlen 1-100 durchgeht, und anschliessend ausgibt, bei welcher Zahl die grösste Endsumme erreicht wird, und wie gross denn diese Summe ist.
Eine kleine Zeitmessung werde ich auch noch einbauen, evtl. dient es dann als "Benchmark".
Nun, hier der Code:
collatz.java
Bench.java
Die App läuft in so fern, dass eine Ausgabe mit dem Wert "0" erfolgt, nur wird nie was gerechnet.
Ich denke, oder hoffe, dass mir wohl nur noch eine Zeile fehlt, da ich irgend etwas partout übersehe :/
Danke schon mal fürs Durchlesen!
Vielleicht kann mir jemand kurzerhand auf die Sprünge helfen.
Ich wollte ein kleines App schreiben, welches die Collatz-Folgen der Zahlen 1-100 durchgeht, und anschliessend ausgibt, bei welcher Zahl die grösste Endsumme erreicht wird, und wie gross denn diese Summe ist.
Eine kleine Zeitmessung werde ich auch noch einbauen, evtl. dient es dann als "Benchmark".
Nun, hier der Code:
collatz.java
Code:
package com.collatz.bench;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.Toast;
public class collatz extends Activity {
/** Called when the activity is first created. */
Bench test = new Bench();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageButton button = (ImageButton) findViewById(R.id.android_button);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
Toast.makeText(collatz.this, "Das höchste Collatz-Ergebnis erreicht man mit der Zahl " +com.collatz.bench.Bench.counterMAX, Toast.LENGTH_SHORT).show();
}
});
}
}
Bench.java
Code:
package com.collatz.bench;
public class Bench {
int betrag = 0;
static int maxbetrag = 0;
int counter = 0;
static int counterMAX = 0;
int wert = 0;
int n = 0;
public Bench () {
while (counter < 100){
n = counter;
betrag = 0;
while (n > 1) {
if ( n %2==0) {
betrag = betrag + n;
if ( betrag > maxbetrag ){ maxbetrag = betrag; counterMAX = counter;}
n = n/2;
}
else {
betrag = betrag + n;
if ( betrag > maxbetrag ){ maxbetrag = betrag; counterMAX = counter;}}
n = 3*n+1;
}
counter++;
}
}
}
}
Die App läuft in so fern, dass eine Ausgabe mit dem Wert "0" erfolgt, nur wird nie was gerechnet.
Ich denke, oder hoffe, dass mir wohl nur noch eine Zeile fehlt, da ich irgend etwas partout übersehe :/
Danke schon mal fürs Durchlesen!