kann man dieses programm noch verkürzen oder verbessern
savitch.In kann man unberücksichtigt lassen, ist nur meine klasse mit der ich die eingabewerte einlese.
l und r bedeutet links und rechts.
so solls aussehen: (einfach alle nuller der zufallszahlen nach hinten tauschen)
|_no 0s___|____________|_0s_|
hier mein beispiel:
savitch.In kann man unberücksichtigt lassen, ist nur meine klasse mit der ich die eingabewerte einlese.
l und r bedeutet links und rechts.
so solls aussehen: (einfach alle nuller der zufallszahlen nach hinten tauschen)
|_no 0s___|____________|_0s_|
hier mein beispiel:
Code:
public class Tauschprogramm {
public static void main(String[] args) {
int[] werte;
int anzWerte;
System.out.println("Tauschprogramm, dass alle Nullen nach hinten tauscht");
System.out.println("Gib eine Anzahl von Werten als Int-Zahl ein:"); //Benutzeraufforderung zur Eingabe
anzWerte = SavitchIn.readLineInt(); //einlesen der Werte
werte = new int[anzWerte];
for (int i = 0; i < werte.length; i++) { // Zufallswerte werden erstellt (%5)
werte[i] = ((int) (Math.random()*100000))%5; //modulo 5, mind. jede 5.zahl eine Null.
System.out.print(werte[i] +","); //Die Zufallwerte ausgeben
}
int l=0, r = werte.length - 1; //Letzter Wert wird nicht betrachtet.
int anzSchritte=0; //Anfangswert 0
for (int i = 0; i < r; i++) {
anzSchritte++;
if (werte[i] == 0) {
while (werte[r] == 0) {
r--;
}
werte[i] = werte[r]; // tausche nach hinten
werte[r]=0;
r--;
} else {
l++;
}
}
System.out.println("Anzahl der Schritte: " + anzSchritte);
for (int wert : werte) {
System.out.print(wert +",");
}
}
}