Hужна помощь по Java!

  • Привет всем!
    Lerne grade für die Klausur (Einführung in die Programmierung), и нехрена не получается.
    Если у когонибудь есть время и желание, то я прошу вас мне помочь написать эту програму.


    Вот задача:

    Aufgabe 3

    Java – Such-Algorithmen
    Ergänzen Sie das folgende Programm um eine Methode, die feststellt, ob die

    übergebene Zahl in dem übergegebenen Array enthalten ist. Die Methode soll

    den Array-Index zurückliefern, an dem die gesuchte Zahl gefunden wurde und

    -1, falls die Zahl nicht in dem Array enthalten ist.


    a)

    public class Aufgabe3

    {

    public static void main(String[] args)

    {

    int[] zahlen = new int[1000];

    //fülle das Array mit Zahlen

    System.out.println( sucheZahl(zahlen, 42));

    }

    //schreiben Sie hier die Methode sucheZahl

    b)
    Schreiben Sie die Methode sucheZahl noch einmal. Diesmal können Sie

    davon ausgehen, dass in dem übergebene Array alle Zahlen aufsteigend

    sortiert sind. Machen Sie sich diese Tatsache zunutze, indem Sie mit binärer Suche arbeiten.

    //schreiben Sie hier die Methode sucheZahl

  • Вот быстро написал все методы. Использовал один вспомогательный метод, что бы заполнить Array случайными числами (лень руками цифры забивать :)) Будут вопросы пиши.


    public class Main {


    /**
    * @param args
    */
    public static void main(String[] args) {
    int[] zahlen = new int[10];
    // Arrey mit Zahlen fühlen
    zahlen = initArray(zahlen);
    System.out.println(sucheZahl(zahlen, 2));


    //Sortiertierte Zahlenfolge
    int[] zahlen1 = { 3, 4, 12, 14, 15, 22, 23, 25 };
    System.out.println(binarSearch(zahlen1, 25));
    System.out.println(binarSearch(zahlen1, 15));
    System.out.println(binarSearch(zahlen1, 250));
    }


    /**
    * Array mit Random-Zahlen fühlen Zahlen liegen im Intervall [0; Laenge des
    * Arrays)
    *
    * @param field
    * @return
    */
    public static int[] initArray(int[] field) {
    int length = field.length;
    for (int i = 0; i < length; i++) {
    field = (int) (Math.random() * length);
    }
    return field;
    }


    /**
    * Array iterieren und nach jede Iteration den Array-Wert mit value
    * vergleichen
    *
    * @param field
    * @param value
    * @return
    */
    public static int sucheZahl(int[] field, int value) {
    for (int i = 0; i < field.length; i++) {
    if (field == value) {
    return i;
    }
    }
    return -1;
    }


    /**
    * Methode sucht die Zahl mit dem binären Algorithmus
    * Voraussetzung: Die Zahlen sind im Array sortiert.
    * @param field
    * @param value
    * @return
    */
    public static int binarSearch(int[] field, int value) {
    int start = 0;
    int end = field.length - 1;
    int middle;
    int current;
    while (start <= end) {
    middle = (end + start) / 2 ;
    current = field[middle];
    if (current == value) {
    return middle;
    } else if (current > value) {
    end = middle - 1;
    } else {
    start = middle + 1;
    }
    }
    return -1;
    }
    }


  • что то странно ты аррей популируешь. во первых можно аррей [by reference] передать и ничего не ретернить и во вторых наверно надо каждую ячейку популировать, а не только одну и туже...тоесть как-то так:


    NULL

  • @ Gordon Freeman


    Ты прав. Это ошибка моя, быстро писал и забыл скобки поставить. :))))


    zahlen = initArray(zahlen); сделал чтобы не объяснять call by reference

    Сообщение было отредактировано 2 раз, последнее редактирование пользователем NemeC ().

  • Спасибо Ребята! Все понял.




    Вот еще проблемка. Помогите с этои задачкои.


    Aufgabe 4

    Java – Kontrollstrukturen

    a)

    Schreiben Sie eine Methode, die feststellt, ob die übergebene Zahl p eine

    Primzahl ist.

    Hinweis: p ist eine Primzahl, wenn es keine Zahl z zwischen 2 und p/2 gibt,

    durch die p teilbar ist. Es gilt: p ist durch z teilbar, wenn p modulo z gleich 0 ist,

    in Java: p % z == 0. Gehen Sie davon aus, dass p >= 2 ist.


    public boolean isPrim(int p)

    {


    //Schreiben Sie hier Ihr Java-Programm

    b)

    Ergänzen Sie das folgende Java-Programm so, dass in dem zweidimensionalen

    Feld alle Elemente den Werte 1 haben, bei denen die Feld-Indizes gleich sind,

    und alle anderen Elemente den Wert 0 (es handelt sich dann um eine

    Einheitsmatrix).


    public class Aufgabe4b

    {

    public static void main(String[] args)


    {

    int[][] array = new int[10][10];

    //verschachtelte for-Schleifen, die das Array

    //entsprechend der Aufgabenstellung füllen