Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  In Array fehlende Zahlen suchen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  In Array fehlende Zahlen suchen (1937 mal gelesen)
gegy3
Mitglied



Sehen Sie sich das Profil von gegy3 an!   Senden Sie eine Private Message an gegy3  Schreiben Sie einen Gästebucheintrag für gegy3

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2008 SP 4.1

erstellt am: 27. Okt. 2008 13:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich habe volgendes Problem und weiß nicht, wie ich das lösen kann.

Ich habe zwei Arrays:

arr1 (1,2,3,4,5,6)
arr2 (1,3,4,6)

ich möchte nun beide arrays vergleichen und herrausßfinden, welche zahlen im Zweiten Array (arr2) fehlen, damit es gleich aussieht wie das erste.

Geht das einfach zu lösen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 27. Okt. 2008 13:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gegy3 10 Unities + Antwort hilfreich

Mahlzeit,

da gibt es mehrere Möglichkeiten.
Leider weis ich aber nicht mit welcher VB Version du arbeitest, bitte das nächste mal an die Netiquette halten und angeben.

Ich gehe jetzt einfach mal von VB6 aus. Dort kommst du an zwei Schleifen nicht vorbei. In diesen Schleifen ermittelst du den Inhalt deiner Arrays und vergleichst diesen miteinander.

Code:
Private Sub ArrayVergleichen(arr1 As Variant, arr2 As Variant)
    If IsArray(arr1) Then
        If IsArray(arr2) Then
            Dim iInhaltArray1 As Integer
            Dim iInhaltArray2 As Integer
            Dim bWertVorhanden As Boolean
            For iInhaltArray1 = 0 To UBound(arr1)
                'Vorbelegung
                bWertVorhanden = False
                For iInhaltArray2 = 0 To UBound(arr2)
                    If arr1(iInhaltArray1) = arr2(iInhaltArray2) Then
                        'Wert ist auch in Array2 vorhanden
                        bWertVorhanden = True
                        Exit For
                    End If
                Next iInhaltArray2
                If bWertVorhanden = False Then
                    MsgBox "Der Wert " & arr1(iInhaltArray1) & _
                        " aus Array1 ist nicht in Array2 enthalten"
                End If
            Next iInhaltArray1
        End If
    End If
End Sub

Nur als Hinweis: In VB.Net gibt es [Array].Contains.

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gegy3
Mitglied



Sehen Sie sich das Profil von gegy3 an!   Senden Sie eine Private Message an gegy3  Schreiben Sie einen Gästebucheintrag für gegy3

Beiträge: 300
Registriert: 26.04.2006

SolidWorks 2008 SP 4.1

erstellt am: 27. Okt. 2008 14:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für deine Hilfe....
*sorry* hatte vergessen anzugeben, dass ich vb.net nutze.
Aber vielen Dank ich werde es mal versuchen mit deinem Code.  

[Array].Contains .....
na das wert ich mir gleich mal als erstes angucken 

[Diese Nachricht wurde von gegy3 am 27. Okt. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 27. Okt. 2008 14:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gegy3 10 Unities + Antwort hilfreich

Sorry aber Contains gibt es leider nur bei Collections.
Ich arbeite nicht viel mit Arrays da ich Collections und dort besonderst die List(Of T) viel komfortabler finde.
Aber man kann sich mit Array.IndexOf behelfen:

Code:
Private Sub ArrayVergleichen( _
    ByVal arr1() As Integer, ByVal arr2() As Integer)
        If IsArray(arr1) Then
            If IsArray(arr2) Then
                For iInhaltArray1 As Integer = _
                        0 To arr1.GetUpperBound(0)
                    If Array.IndexOf( _
                        arr2, arr1(iInhaltArray1)) = -1 Then
                        MsgBox("Der Wert " & arr1(iInhaltArray1) & _
                        " aus Array1 ist nicht in Array2 enthalten")
                    End If
                Next iInhaltArray1
            End If
        End If
End Sub

Evtl. geht es aber noch einfacher, schau mal nach was dir die Array Klasse alles so anbietet.

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

compimento
Mitglied


Sehen Sie sich das Profil von compimento an!   Senden Sie eine Private Message an compimento  Schreiben Sie einen Gästebucheintrag für compimento

Beiträge: 9
Registriert: 15.03.2007

erstellt am: 13. Okt. 2011 15:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gegy3 10 Unities + Antwort hilfreich

Hallo zusammen,

das Thema liegt schon etwas zurück und ich habe trotzdem noch eine Frage dazu. Ich möchte die fehlenden Werte in einer Listbox hinzufügen.
Das funktioniert soweit auch, nur gibt es Probleme wenn die Werte z.B. in folgender Reihnfolge stehen: 1,2,8,9,14 dann liefert er mir den Wert 8 wiederholt. Quasi immer wenn am Ende eine sehr größere Zahl steht. Kann jemand weiterhelfen? Danke !
ps: im Ersten Schritt werden die Werte sortiert damit die höchste Zahl am Ende steht.

Bisheriger Code VB6:

Private Sub Form_Load()

List1.AddItem "001"
List1.AddItem "002"
List1.AddItem "008"
List1.AddItem "009"
List1.AddItem "014"

End Sub

Private Sub Command1_Click()

For i = Form1.List1.ListCount - 1 To 0 Step -1
        If i > 0 Then
            diff = Form1.List1.List(i) - Form1.List1.List(i - 1)
            Do While diff > 1
                NewRoundUpper = (i - 1) + diff
                Exit For
            Loop
           
        End If
    Next
       
    For i = Form1.List1.ListCount - 1 To 0 Step -1
        sName = Form1.List1.List(i)
        If IsNumeric(sName) Then
            If sName = "001" Then
                existing_001 = True
                Exit For
            Else
                existing_001 = False
            End If
        End If
    Next
   
    If existing_001 = False Then NewRoundUpper = "1"
       
    If NewRoundUpper = "" Or NewRoundUpper = "0" Then
        For i = 0 To Form1.List1.ListCount - 1
            sName = Form1.List1.List(i)
                If IsNumeric(sName) Then
                    If sName > Max Then
                        Max = sName
                        NewRoundUpper = "0"
               
                    If NewRoundUpper <= sName Then
                        NewRoundUpper = (sName + 1)
                    End If
                End If
            End If
        Next
    End If
                     
    NewRound = Format(NewRoundUpper, "000")
    List1.AddItem NewRound
   
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz