Ankündigung

Einklappen
Keine Ankündigung bisher.

User helfen User - Programmieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    SELECT t2.name FROM maschinen_playlisten t0 INNER JOIN playlisten t1 ON t0.playlisten_ID = t1.id INNER JOIN maschinen t2 ON t0.maschinen_ID = t2.ID WHERE t2.ID = 3 AND BETWEEN t1.gueltig_von AND t1.gueltig_bis

    Kommentar


      Ich hänge grade ziemlich:

      Habe zwei Arrays mit Ints.
      Beispielsarray 1=[10,10,10,20,30,40]
      Beispielsarray 2=[10,20,20,30,30,40]

      Diese Arrays sollen "vereint" werden, sodass Gleiche Elemente überschrieben werden und sonst einfach hinzugefügt wird.

      Also Zielarray wäre [10,10,10,20,20,30,30,40] (3x 10 ausm arr1, die 10 aus arr2 wurde überschrieben weil es im arr1 mehr 10er gab, genauso für die anderen Zahlen).

      Gibts da ne einfache Lösung dafür? Ich habs Gefühl das es eig. nicht besonders schwer sein sollte und ich grade nur aufm Schlauch stehe

      Edit: Sprache Java, ist aber eigentlich egal, soll nach Möglichkeit ohne irgendwelche externen Libs auskommen.

      Kommentar


        Gibt in Java Sets. Da kann jedes Element nur einmal drin auftauchen. Wird es erneut hinzugefügt, passiert nix.
        D.h. set1.addAll(set2) sollte dein Problem lösen.

        Um aus einem Array ein Set zu machen gibt's viele Möglichkeiten. Jedes Element in einer for-Loop einzeln hinzufügen, oder auch Set set = new HashSet(Arrays.asList(array1)); wären zwei Vorschläge.

        set1.toArray(new String[0]); u.ä. wäre die Rückwärtskonvertierung von Set zu Array.

        Kommentar


          Sets kenne ich, leider nicht genau das was ich brauche.
          Brauche ja wie im Beispiel beschrieben immer die Zahlen, die in beiden Arrays vorkommen, aber eben die Anzahl der Zahlen aus dem Array wo die Zahl öfter vorkommt. Zahl x in beiden Arrays -> Neuer Array hat die Zahl x n-mal, wobei n die Anzahl der Vorkommen der Zahl in dem Array ist, in dem sie öfter vorkommt. Zahl nicht in beiden Arrays -> Neuer Array hat Zahl x n-mal, wobei n die Anzahl der Zahl ist, wie oft sie in dem Ausgangsarray vorkommt.

          Kommentar


            sind die array immer sortiert?

            Dann einfach mit zwei Schleifenvariablen gleichzeitig über beide arrays iterieren. Wenn beide den gleichen Wert haben beide Schleifenvariablen erhöhen. Ansonsten die mit dem kleinen Wert erhöhen.
            Bei Gleichheit schreibste der Wert von einem beliebigen Array ins Zielarray ansonsten immer das Minimum.

            Kommentar


              Leider nicht sortiert. Hatte aber auch schon überlegt, ob sich das lohnen würde da ne Sortierung zu implementieren, aber dachte es geht vl auch ohne.

              Darf leider keine bestehenden (arrays.sort,etc) verwenden, müsste ich mir selbst schreiben

              Kommentar


                Hört sich nach ner richtig bescheuerten Erstsemester Aufgabe an. Kannst mal die ganze Aufgabenstellung posten? Dann schau ich mir das mal schnell an später und kann dir mal nen Lösungsvorschlag posten.

                Kommentar


                  Okay stop, habe grade erfahren das ich wohl viel zu kompliziert vorgehe.

                  Hat sich denke erledigt.

                  Aber es geht drum, das kleinste gemeinsame vielfache zu finden. Hatte das zuerst über Primfaktorzerlegung implementiert, habe grade gesehen das es über ggT (m,n) * kgV (m,n) = | m * n | viel einfacher geht. Dann spare ich mir die ganze Sache mit den Arrays :D

                  Kommentar


                    Okay, da fällt mir auch keine einfache Lösung ein. Kann dir eine aufschreiben, aber ein Zweizeiler oder so isses dann nicht mehr.
                    In jedem Fall musste alle möglichen Zahlen durchgehen und für jede Zahl die maximale Anzahl ermitteln. Ob jetzt 'nen Stream oder konventionell über eine for-each-Schleife. Mit der maximalen Anzahl rufst du eine zweite Methode auf, die entsprechend of die aktuelle Zahl in die Zielsammlung hinzufügt. Einen Array würde ich erst zum Schluss draus machen, falls du wirklich einen brauchst.
                    Ist das irgendeine Uni-Aufgabe, mit der ihr an einen tollen Algorithmus herangeführt werden sollt oder ein praktisches Problem? Hast du Einfluss auf die Erzeugung der Arrays? Für meinen Geschmack sollte von Anfang an hier gar nicht mit Arrays arbeiten, sondern mit einer Map von Zahl zu Anzahl.

                    Edit: Oh, okay. :)

                    Kommentar


                      Zitat von QTPie
                      Leider nicht sortiert. Hatte aber auch schon überlegt, ob sich das lohnen würde da ne Sortierung zu implementieren, aber dachte es geht vl auch ohne.

                      Darf leider keine bestehenden (arrays.sort,etc) verwenden, müsste ich mir selbst schreiben
                      Ja dann mach einfach ne while Schleife und lass dir immer das Minimum der Minimums der Arrays ausgeben. Das steckste in dein Zielarray und löscht den entsprechenden Wert aus dem Array wo es raus kam. Haben beide das gleiche Minimum löschte den Wert in beiden Arrays. Machste so lange bis beide Arrays leer sind.

                      Ist aber sicher nicht die effizienteste Lösung.

                      /e: nvm

                      Kommentar


                        Danke trotzdem für die schnelle Hilfe :)

                        Kommentar


                          Zitat von QTPie
                          Ich hänge grade ziemlich:

                          Habe zwei Arrays mit Ints.
                          Beispielsarray 1=[10,10,10,20,30,40]
                          Beispielsarray 2=[10,20,20,30,30,40]

                          Diese Arrays sollen "vereint" werden, sodass Gleiche Elemente überschrieben werden und sonst einfach hinzugefügt wird.

                          Also Zielarray wäre [10,10,10,20,20,30,30,40] (3x 10 ausm arr1, die 10 aus arr2 wurde überschrieben weil es im arr1 mehr 10er gab, genauso für die anderen Zahlen).

                          Gibts da ne einfache Lösung dafür? Ich habs Gefühl das es eig. nicht besonders schwer sein sollte und ich grade nur aufm Schlauch stehe

                          Edit: Sprache Java, ist aber eigentlich egal, soll nach Möglichkeit ohne irgendwelche externen Libs auskommen.
                          ohne genau drüber nachgedacht zu haben, weil es schon spät ist....aber irgendwas mit streams? filter(), map() oder so?

                          Kommentar


                            Hey,

                            int[] Array = new int[5000];
                            Random rnd = new Random();


                            private void btn_auswerten_Click(object sender, EventArgs e)
                            {

                            int max = 0;
                            int summe = 0;

                            foreach (int i in Array)
                            {
                            if (max < i)
                            {
                            max = i;
                            }
                            }
                            MessageBox.Show(max.ToString());
                            }

                            Das Array ist mit 5000 Zufallszahlen (ints) befüllt.
                            Ich möchte gerne die größte Zahl im Array finden und mir als MessageBox ausgeben. Die MessageBox gibt mir jedoch jedes mal den letzten Wert im Array. Wo ist der Fehler?!

                            Kommentar


                              Deine if-Abfrage sollte die Array-Werte an der Stelle i/max nutzen.

                              Kommentar


                                verstehe nicht wie du das meinst, magst du mir einmal präzise sagen, was du im code ändern würdest?

                                Kommentar

                                Lädt...
                                X