Entwickler-Ecke

Sonstiges (Delphi) - Array-Problem


Trialtom - Sa 14.09.02 23:16
Titel: Array-Problem
Hallo an alle,
ja schon wieder ein Problem:
Ich habe 2 Array mit jeweils bis zu über 20 strings. das programm muss nun erkennen, ob ein Wort des einen Array (aus N[c]...z.B.) mit einem Wort des anderen Array (O[c]) übereinstimmt. c sei einfach nur die Folge der nat. Zahlen (1,2,3,...,c). Wenn es ein Wort gibt, dass in N[c] UND in O[c] vorhanden ist, das soll es eine Anweisung audführen:
N[1]=asyz N[2]=syzw N[3]=yzwe N[4]=zwei N[5]=weiq ....
O[1]=null O[2]=eins O[3]=zwei O[4]=drei ....
Ich möchte das es erkennt das das Wort 'zwei' jeweils in N[c] als auch in O[c] gibt.
Ich glaube ich habe mich viel zu präzise ausgedrückt, die ersten 2 sätze hätten genügt. :D
Wenn ihr ne Idee habt, wäre echt hilfreich.
Danke


Tino - So 15.09.02 00:11

Besteht jedes Element nur aus einem Wort oder kann es sich dabei auch um mehrere Wörter handeln?


Trialtom - So 15.09.02 02:24

nein, jedes element hat nur ein wort, wie in dem beispiel --> N[3]=yzwe
das einzige was auf diesem element n[3] gespeichert ist ist der string 'yzwe'. um ein beispiel zu nennen.


bis11 - So 15.09.02 03:21

Hi,

Du durchsuchst einfach Deinen Array N nach Deinem String. Hast Du Ihn gefunden, merkt sich das Programm das und dann durchsuchst Du dein Array O. Ist auch dort dieses Wort enthalten, so merkst Du Dir das ebenfalls und machst dann eine Abfrage. Sind beide Werte positiv, führst Du deine Anweisung aus.


Hagbard Celine - So 15.09.02 08:59
Titel: Re: Array-Problem
Trialtom hat folgendes geschrieben:
Hallo an alle,
ja schon wieder ein Problem:
Ich habe 2 Array mit jeweils bis zu über 20 strings. das programm muss nun erkennen, ob ein Wort des einen Array (aus N[c]...z.B.) mit einem Wort des anderen Array (O[c]) übereinstimmt. c sei einfach nur die Folge der nat. Zahlen (1,2,3,...,c). Wenn es ein Wort gibt, dass in N[c] UND in O[c] vorhanden ist, das soll es eine Anweisung audführen:
N[1]=asyz N[2]=syzw N[3]=yzwe N[4]=zwei N[5]=weiq ....
O[1]=null O[2]=eins O[3]=zwei O[4]=drei ....
Ich möchte das es erkennt das das Wort 'zwei' jeweils in N[c] als auch in O[c] gibt.
Ich glaube ich habe mich viel zu präzise ausgedrückt, die ersten 2 sätze hätten genügt. :D
Wenn ihr ne Idee habt, wäre echt hilfreich.
Danke


Wenn Du direkt bei der Eingabe eines Wertes in ein Array prüfst ob der Wert in dem anderen vorkommt, so kannst Du einfach auf diese Weise prüfen ob er dort vorhanden ist :


Quelltext
1:
2:
3:
4:
5:
i := 0;
found := false;
while (i < length(Array)) and (found=false) do
  if (Array[i] = neuerWert) then found := true
  else inc(i);


Jetzt hast Du in i die Position des ersten Vorkommens von neuerWert!
Wenn Du alle Vorkommen von neuer Wert im Array finden möchtest musst DU entsprechend mit einem Array für die Positionen arbeiten und die Schleife bis zum letzten Element durchlaufen!

Wenn du zu einem beliebigen Zeitpunkt diebeiden Arrays vergleichen möchtest so kannst Du die obige Funktion in eine weitere Schleife setzen :


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
for j := 0 to length(ArrayEins) do begin
  i := 0;
  found := false;
  while (i < length(ArrayZwei)) and (found=false) do 
    if (Array[i] = ArrayEins[i]) then found := true
    else inc(i);
  
  // Ergebnis verarbeiten für jedes Feld!

  end;

// Ergebnis verarbeiten nachdem alle Felder verglichen wurden.


Ich hoffe das hilft Dir weiter!


Trialtom - So 15.09.02 16:10

1000 Dank, mit einigen kleinen Veränderungen ging es, wow. Bis man durch so eine Schleife vollständig durchsieht...
Thanks!