Prozedur Minimum, Maxiumum, Summe



  • Hallo Leute,

    ich habe leider nicht so viel Ahnung von C++ und programmieren allgemein und muss folgende aufgabe lösen:

    Was muss ich hier für eine Prozedur programmieren? vielen dank im Voraus.

    public class u6_a1 {
    public static void main(String[] args) {
    // Viele Messwerte kann man mit einzelnen Variablen nicht sinnvoll verwalten:
    // double x1 = 5.890, x2 = 6.365; // usw.

    // Java bietet dafür Felder.
    // So legt man ein Feld x für 1000 Elemente des Typs double an:
    // double[] x = new double[1000];
    // x[0] = 5.890; x[1] = 6.365; // usw.

    // Wenn die Werte bekannt sind, kann man ein Feld damit direkt anlegen,
    // wobei Java die Elemente zählt und die Feldgröße entsprechend einstellt,
    // im Beispiel 25.
    double[] x = { 5.890, 6.365, 0.988, -5.298, -6.712, -1.956, 4.599, 6.926, 2.885, -3.808, -7.000, -3.756, 2.941,
    6.934, 4.552, -2.015, -6.730, -5.257, 1.049, 6.391, 5.857, -0.062, -5.924, -6.339, -0.926 };

    // Mit einer for-Schleife kann man nacheinander auf alle Feldelemente zugreifen.
    // Die Feldgröße liefert dabei length.
    for (int i = 0; i < x.length; ++i)
    System.out.println(x[i]);

    System.out.println("Summe: " + summe(x));
    System.out.println("Mittelwert: " + mittelwert(x));
    System.out.println("Minimum: " + minimum(x));
    System.out.println("Maximum: " + maximum(x));
    System.out.println("Index des Maximums: " + suchen(x, maximum(x)));

    sortieren(x);
    for (int i = 0; i < x.length; ++i)
    System.out.println(x[i]);
    // Hier haben wir das zweite Mal die Ausgabe aller Feldelemente.
    // TODO: Definieren Sie eine Prozedur "ausgeben", die das erledigt.

    // Wie sucht man in einem Telefonbuch? Man schlägt die Mitte auf und schaut,
    // ob der gesuchte Name davor oder danach kommt. Dementsprechend sucht man
    // weiter vorne oder hinten. Wenn man die noch relevanten Seiten immer in der
    // Mitte halbiert, kommt man nach log n (zur Basis 2), wobei n die Seitenzahl
    // ist,
    // ans Ziel.
    // Beim Suchen in einem sortierten Feld kann das Programm genauso vorgehen.
    // Dabei mit untere Grenze ug = 0 und obere Grenze og = x.length-1 anfangen.
    // Die Mitte ergibt sich aus m = ug+(og-ug)/2.
    int index = binaereSuche(x, 0.988);
    System.out.println("Index von 0.988: " + index);
    }

    private static double maximum(double[] feld) {
    // Bestimmt den größten Wert im Feld.
    double max = feld[0];
    for (int i = 1; i < feld.length; ++i)
    if (feld[i] > max)
    max = feld[i];
    return max;
    }

    private static int suchen(double[] feld, double suchwert) {
    // Sucht in einem (unsortierten) Feld einen Wert und liefert dessen Index.
    for (int i = 0; i < feld.length; ++i)
    if (feld[i] == suchwert)
    return i;

    return -1; // nicht gefunden
    }

    private static void sortieren(double[] feld) {
    // Sortiert das Feld
    for (int i = 0; i < feld.length - 1; ++i) {
    // Minimum im Restfeld ab i suchen
    double min = feld[i];
    int minIdx = i; // Index des Minimums
    for (int j = i + 1; j < feld.length; ++j) {
    if (feld[j] < min) {
    min = feld[j];
    minIdx = j;
    }
    }
    // Das Minimum nach vorne tauschen: feld[i] <-> feld[minIdx]
    double merken = feld[i];
    feld[i] = feld[minIdx];
    feld[minIdx] = merken;
    }
    }

    }



  • 1. Wir machen nicht deine Hausaufgaben.
    2. Scheinst du dich überhaupt nicht bemüht zu haben selbst eine Antwort zu finden.
    3. Der Code ist weder übersichtlich formatiert noch in Codetags gepostet.
    4. Glaube ich du weißt selbst nichtmal was du mit dem Code überhaupt machen sollst
    5. Das ist nichtmal C++

    Fazit: Für soviel Faulheit gibt's keine Hilfe


Log in to reply