| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: In Array fehlende Zahlen suchen (1937 mal gelesen)
|
gegy3 Mitglied
 
 Beiträge: 300 Registriert: 26.04.2006 SolidWorks 2008 SP 4.1
|
erstellt am: 27. Okt. 2008 13:13 <-- editieren / zitieren --> Unities abgeben:         
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
  
 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 / zitieren --> Unities abgeben:          Nur für gegy3
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
 
 Beiträge: 300 Registriert: 26.04.2006 SolidWorks 2008 SP 4.1
|
erstellt am: 27. Okt. 2008 14:37 <-- editieren / zitieren --> Unities abgeben:         
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
  
 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 / zitieren --> Unities abgeben:          Nur für gegy3
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
 Beiträge: 9 Registriert: 15.03.2007
|
erstellt am: 13. Okt. 2011 15:11 <-- editieren / zitieren --> Unities abgeben:          Nur für gegy3
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 >>)
 |