Announcement

Collapse
No announcement yet.

Elemente im Array vergleichen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Elemente im Array vergleichen

    Hallo!

    Wieder mal ne kleine doofe Frage von mir:

    Warum kann man eigtl nicht so schauen, ob zwei Elemente gleich sind:

    Code:
    For x As Integer = 0 to 10
    For y As Integer = 0 to 10
    If array(x) = array(y) Then
    Msgbox("Sie haben zwei konvergente Zahlen.")
    End If
    Next
    Next

  • #2
    Weil auf Arrayelemente mit eckigen Klammern zugegriffen wird
    Christian

    Comment


    • #3
      Eckige Klammern? In vb.net?

      Comment


      • #4
        Sorry, Irrtum
        Christian

        Comment


        • #5
          Ja, ist ja auch egal. Es geht nicht um die Sprache, sondern um die Logik. Warum brauch ich ne Vergleichsvariable und kanns nicht wie oben lösen?

          Comment


          • #6
            Hallo,

            ob 2 Elemente des Arrays gleich sind kann ja so geprüft werden. Es kommt halt auf den Typ der Array-Elemente darauf an. = prüft bei Referenztypen auf Referenzgleichheit und bei Gleitkommazahlen sollte auch nicht mit = geprüft werden, sondern mit einer zulässigen Differenz.

            Das "Sie haben zwei konvergente Zahlen." passt allerdings nicht. Zahlen können nicht konvergent sein - Konvergenz ist u.a. eine Eigenschaft von (Zahlen-) Folgen.

            Was hast du denn überhaupt vor?


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              Okay danke.

              Also im Prinzip habe ich in diesem Array Namen stehen und will sie auf Gleichheit prüfen.

              Comment


              • #8
                Hallo,

                also Strings.

                Wo ist das Problem?


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  Also wenns man größer wird kannst Du die Schleife schon intelligenter machen

                  [highlight=c#]
                  for(int i=0; i<10; i++)
                  for(int j=i; j<10; j++)
                  {
                  ...
                  }
                  [/highlight]

                  Wird denn in VB nur mit einem = verglichen? Ist das nicht eher eine Zuweisung? Ich kenne das noch von C++, ansonsten ist es eine Zuweisung. Aber ich schätze da würde schon der Compiler meckern.
                  Damit vergleichst Du Elemente nicht doppelt aber das nur am Rande

                  Comment


                  • #10
                    Um diese verschachtelten Schleifen befindet sich noch eine Schleife, die mir die Namen in eine Datei schreibt, wenn keine Einträge doppelt sind. Und das Ganze ist dann nahezu wie eine Endlosschleife, denn beim Debuggen kann ich ne halbe Minute mit dem Finger auf Enter bleiben, wenn die MsgBox kommt... was is da los?

                    Comment


                    • #11
                      Dann ist deine Abstraktion des Fehlers aus Beitrag #1 gründlich missglückt.

                      Wie solle ohne konkreten Code hier einer etwas dazu sagen?

                      Welche MessageBox?
                      Christian

                      Comment


                      • #12
                        Hallo,

                        warum hast du überhaupt die MessageBox drin? Die stört doch nur. Nimm lieber ein Boolean das Auskunft darüber gibt (und brich ggf. die Schleife ab). Am Ende kannst du dann die MessageBox anzeigen lassen (unter Berücksichtigung des Wertes des Boolean).

                        Statt der Schleifen kannst du auch mit einem HashSet prüfen. Ist oft eleganter und effizienter -> Contains-Methode


                        mfG Gü
                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                        Comment


                        • #13
                          Für Christian:

                          Code:
                           For a As Integer = 0 To 100
                                      For b As Integer = 0 To 100
                                          For c As Integer = 0 To 100
                                              If Array(b).name = Array(c).name Then
                                                  MsgBox("Doppelter Eintrag")
                                              End If
                                          Next
                                      Next
                                      writer.WriteLine(Array(a).ausgabe)
                           Next
                          Writer ist mein StreamWriter.
                          ausgabe() in meiner eigenen Klasse :

                          Code:
                          Public Function ausgabe() As String
                                  Return _vorname & ";" & _name (...)
                              End Function
                          Zuletzt editiert von sekkfried; 19.10.2010, 11:36. Reason: danke christian

                          Comment


                          • #14
                            Hallo,

                            und was ist damit? Ich sehe nur Code (der nicht elegant ist, aber auf diese irrelevante Information wurdest du ja schon hingewiesen).

                            Hast du das Frage-Antwort-Prinzip verstanden?


                            mfG Gü
                            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                            Comment


                            • #15
                              Nun, jede Menge Code.....

                              Wozu das IF, es passiert ja doch nichts.
                              Wo ist das Next der ersten Schleife?

                              Wenn ich das richtig sehe ist in dem Array irgendein Objekt?

                              array(a).ausgabe

                              Mit deiner IF-Prüfung würdest du die Objekte vergleiche und nicht ggf. in dem Objekt vorhandene Bestandteile

                              Vermutlich müsste das

                              Array(b).NAME = Array(c).NAME

                              lauten
                              Christian

                              Comment

                              Working...
                              X