Aufgabenstellung ist folgende:
Schreiben Sie ein Programm, das in einem array mit int-Werten alle Vorkommen von negativen Zahlen nach vorn tauscht. Das Programm soll vom Benutzer array-Länge und Inhalt erfragen und das array in ursprünglicher und in modifizierter Gestalt ausdrucken. Sie dürfen keine Hilfsarrays anlegen.
Hinweis: Benutzen Sie eine Schleifeninvariante, der entsprechend das Feld aus drei Teilen besteht: aus einem schon bearbeiteten Anfangsteil aus negativen Zahlen, einem Endteil aus nicht-negativen Zahlen und einem noch nicht betrachteten Mittelteil. (< 0 | ???? | >= 0)
;(Leider macht das Programm das ich geschrieben habe gar nichts außer des einlesens des Arrays. Es wird zwar kompiliert, aber es geschieht nichts. Habe durch das einfügen von ein paar Ausgaben versucht dahinter zu kommen was passiert während es läuft, doch es wird nicht mal was ausgegeben (in der Schleife). Mein Lösungsansatz bis jetzt:
Schreiben Sie ein Programm, das in einem array mit int-Werten alle Vorkommen von negativen Zahlen nach vorn tauscht. Das Programm soll vom Benutzer array-Länge und Inhalt erfragen und das array in ursprünglicher und in modifizierter Gestalt ausdrucken. Sie dürfen keine Hilfsarrays anlegen.
Hinweis: Benutzen Sie eine Schleifeninvariante, der entsprechend das Feld aus drei Teilen besteht: aus einem schon bearbeiteten Anfangsteil aus negativen Zahlen, einem Endteil aus nicht-negativen Zahlen und einem noch nicht betrachteten Mittelteil. (< 0 | ???? | >= 0)
;(Leider macht das Programm das ich geschrieben habe gar nichts außer des einlesens des Arrays. Es wird zwar kompiliert, aber es geschieht nichts. Habe durch das einfügen von ein paar Ausgaben versucht dahinter zu kommen was passiert während es läuft, doch es wird nicht mal was ausgegeben (in der Schleife). Mein Lösungsansatz bis jetzt:
Java:
public class Aufgabe
{
public static void main (String [] args)
{
int n, hilf1, hilf2, zaehler1, zaehler2;
System.out.println ();
System.out.println ("Geben Sie die Laenge des arrays ein!");
n = SavitchIn.readLineInt ();
System.out.println ();
int arr [] = new int [n];
zaehler2 = 0;
hilf1 = 0;
hilf2 = 0;
for (int spalte = 0; spalte < n; spalte++) //Eingabe des Arrays
{
System.out.println ("Geben Sie die " + (spalte+1) + ". Zahl ein!");
arr [spalte] = SavitchIn.readLineInt ();
}
System.out.println ("Array in der urspruenglichen Form: ");
for (int i = 0; i < n; i++) //Ausgabe Array ursprünglich
{
System.out.print (arr [i] + ", ");
}
System.out.println ();
for (int anf = 0; anf < zaehler2; anf++) //von vorne nach einer positive Zahl suchen
{
zaehler1 = anf;
if (arr [zaehler1] > 0)
hilf1 = arr [anf];
for (int end = arr.length; end > zaehler1; end--) //von hinten nach einer nagativen Zahl suchen
zaehler2 = end;
if (arr [zaehler2] < 0)
hilf2 = arr [zaehler2]; //tauschen von positiven + negativen Zahlen
arr [zaehler2] = arr [arr.length-(zaehler1+zaehler2)];
arr [arr.length-(zaehler1+zaehler2)] = hilf2;
}
System.out.println (hilf1);
System.out.println (hilf2);
//wenn in der Mitte nichts mehr da steht Ausgabe des Arrays
System.out.println ("Array sortiert: ");
for (int j = 0; j < n; j++)
System.out.print (arr [j] + ", ");
}
}
Zuletzt bearbeitet von einem Moderator: