1.3k Aufrufe
Gefragt in SW-Sonstige von bumbum Einsteiger_in (39 Punkte)
Hallo erstmal,
ich habe einige Fragen an euch, da ich nächste Woche Donnerstag eine Informatikklausur schreibe, und ich zwar grundlegend weiss, was diese Java-Programme machen, möchte ich trotzdem einmal bitte erklärt bekommen, welcher Befehl in den folgenden Programmen was erledigt und wie.
Hier habe ich zwei Beispiele die wir schreiben sollten, es sind Lösungen müsste also alles richtig sein:

1.
public class Selectionsort{

static int[] z;

public static void main ( String [] args ){
z= new int [6];
double d;
int i, v;

for (i = 0; i<6 ;i++){

d = Math.random() * 49 +1 ;
z [i] = (int) d;
System.out.print(z[i] + ", ");
}

int j;
v= z [0];

for (j= 0;j<6;j++){
v= z [j];

System.out.println("\n");

for (i = j+1;i<6;i++){
if (v>z[i]){

z[j]= z[i];
z[i]= v;
v = z[j];
}
}
druckeArray();
}
}

public static void druckeArray(){
for (int i=0;i<6; i++){
System.out.print(z[i] + ", ");
}
}
}



2.
public class Bubble {
public static void main (String Args [] ) {


int [] Zahlen = new int [6];
int N=5;
int i;
int Zahl;
for (i=0;i<=5;i++){
Zahlen [i] = 0;
}
int j;
for (j=0;j<=5;j++){
Zahl = (int)((Math.random()*49)+1);
while ( Zahl == Zahlen [1] || Zahl == Zahlen [2] || Zahl == Zahlen [3] || Zahl == Zahlen [4] || Zahl == Zahlen [5] || Zahl == Zahlen [0]){
Zahl = (int)(Math.random()*6+1);
}
Zahlen [j] = Zahl;
System.out.print(Zahlen [j]+ ", ");
}
boolean getauscht = true;
int k;
int v;
int m = 0;
while (getauscht == true){
getauscht = false;
for (k=0;k<N;k++){

v = Zahlen [k];
if (Zahlen [k] > Zahlen [k+1]){

Zahlen [k] = Zahlen [k+1];
Zahlen [k+1] = v;

getauscht = true;
}
}
m += 1;
}
System.out.println("\n");
int l;
for (l=0;l<=N;l++){
System.out.print(Zahlen [l]+", ");
}
System.out.println("\n\n" + m + " Durchga(e)ng(e)");
}
}

Es sind beides diese Selctionsort Programme, das untere als "Bubble".

Danke euch schonmal im Vorraus, hoffe ihr könnt mir helfen.

MfG

BumBum

3 Antworten

0 Punkte
Beantwortet von doc-jay Experte (6.8k Punkte)
Wenn ich jetzt gemein wäre würde ich ja sagen du hättest im Unterricht nicht so viel schlafen sollen (oder hast du mich als Vorbild genommen? ;-) )

Auch wenn Java schon etwas her ist, die Grundlagen sitzen zum Glück noch bei mir.

zu 1:

Wie es funktioniert steht hier:
de.wikipedia.org/wiki/Selectionsort

Dein Code hat auch einige Fehler! Mal ist z nur ein einzelner int-Wert, mal ein Array!! Das funktioniert so nicht!!
Am Besten nochmal überarbeiten und testen, das übt!

Was die einzelnen Befehle machen werde ich hier jetzt nicht erklären, das ist zu viel. ABer was die Abschnitte machen sollen (! auch wenn sie es in der Form wohl nicht machen) das sei mal kurz dargestellt

1.
public class Selectionsort{

static int[] z;

public static void main ( String [] args ){
z= new int [6];
double d;
int i, v;

// Belegung der Feldelemente mit Zufallszahlen
for (i = 0; i<6 ;i++){

d = Math.random() * 49 +1 ;
z = (int) d;
System.out.print(z + ", ");
}

int j;
v= z [0];

// Geht die Liste von Oben nach unten durch (index 0 bis 5)
for (j= 0;j<6;j++){
v= z [j];

System.out.println("\n");

// Nimmt sich das jeweils nächste Element, vergleich und vertauscht die Positionen falls nötig (Achtung, geschachtelte Schleifen) //
for (i = j+1;i<6;i++){
if (v>z){

z[j]= z;
z= v;
v = z[j];
}
}
druckeArray();
}
}

// dürfte eigentlich logisch sein...
public static void druckeArray(){
for (int i=0;i<6; i++){
System.out.print(z + ", ");
}
}
}



zu 2:
de.wikipedia.org/wiki/Bubblesort
2.
public class Bubble {
public static void main (String Args [] ) {


int [] Zahlen = new int [6];
int N=5;
int i;
int Zahl;
for (i=0;i<=5;i++){
Zahlen = 0;
}
int j;

// Belegt die Feldelemente mit Zufallszahlen unter Verhinderung von doppelten Elementen
for (j=0;j<=5;j++){
Zahl = (int)((Math.random()*49)+1);
while ( Zahl == Zahlen [1] || Zahl == Zahlen [2] || Zahl == Zahlen [3] || Zahl == Zahlen [4] || Zahl == Zahlen [5] || Zahl == Zahlen [0]){
Zahl = (int)(Math.random()*6+1);
}
Zahlen [j] = Zahl;
System.out.print(Zahlen [j]+ ", ");
}

// Variable getauscht is eine "Beschleunigung
boolean getauscht = true;
int k;
int v;
int m = 0;

// Solange getauscht wurde mache...
while (getauscht == true){
getauscht = false;

// Durchlaufe die Liste, vergleiche und tausche ggf.
for (k=0;k<N;k++){

v = Zahlen [k];
if (Zahlen [k] > Zahlen [k+1]){

Zahlen [k] = Zahlen [k+1];
Zahlen [k+1] = v;

getauscht = true;
}
}
m += 1;
}

System.out.println("\n");
int l;


for (l=0;l<=N;l++){
System.out.print(Zahlen [l]+", ");
}
System.out.println("\n\n" + m + " Durchga(e)ng(e)");
}
}


Ich hoffe ich konnte ein klein wenig helfen.

Der Doc
0 Punkte
Beantwortet von bumbum Einsteiger_in (39 Punkte)
Danke dir Doc :D
Ja mit schlafen is eig nicht soda der Lehrer streng ist O.o aber irgendwann hab ich die ganzen Befehle durcheinander gebracht und kam dann nicht mehr mit weil ich mich um andere Klausruren kümmern musste :D Aber danke nochmal!!! Jetzt kann ich lernen !!!

Gruß

BumBum
0 Punkte
Beantwortet von doc-jay Experte (6.8k Punkte)
Ich hoffe meine paar Angaben reichen dir.. Kannst ja mal das Ergebnis der Klausur hier posten... *neugier*
...