Schrift
[thread]8941[/thread]

arrays vergleichen

Leser: 5


<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
blaise4714
 2007-04-24 16:21
#76175 #76175
User since
2007-04-18
22 Artikel
BenutzerIn
[Homepage] [default_avatar]
hallo Alle,
Ich möchte zwei arrays vergleichen: ZB
@arrays1 = (w,a,f,g,b,c,j,g,r,l)
@arrays2 = (0,1,r,5,6,a,l,w,f,b,g)
Einzel Element der @array1 sollten mit denen von @array2 vergleichen werden. Falls dieses Element in @array2 existiert, die Position in @array2 sollte ausgegeben werden.
Kann bitte jemanden mir helfen?
danke im vorraus.
styx-cc
 2007-04-24 16:32
#76176 #76176
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl -w
use strict;

my @arrays1 = qw(w a f g b c j g r l);
my @arrays2 = qw(0 1 r 5 6 a l w f b g);

for my $cur (@arrays1) {
for (my $i=0; $i<scalar(@arrays2);$i++) {
print "$cur kommt an Stelle $i im 2. Array vor.\n" if ($cur eq $arrays2[$i]);
}
}


MfG
Pörl.
Taulmarill
 2007-04-24 17:10
#76177 #76177
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Auf die Gefahr hin, hier wieder eine ewig lange Diskussion zu provozieren:

Sollte man anstatt von 0 bis scalar( @array ) - 1 nicht lieber von $[ bis $#array zählen?
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
blaise4714
 2007-04-24 17:23
#76178 #76178
User since
2007-04-18
22 Artikel
BenutzerIn
[Homepage] [default_avatar]
thank you!
styx-cc
 2007-04-24 17:41
#76179 #76179
User since
2006-05-20
533 Artikel
BenutzerIn

user image
@Taulmarill
Hast meines Erachtens nach Recht, (my $i=$[; $i<$#arrays2;$i++) sieht hübscher aus und achtet darauf das halt $[ als Startwert benutzt wird..

Aber muesste mein obiger Code dann nicht eine Warnung werfen, da ich ja bei scalar(@arrays2) das -1 vergessen habe und zum Ende hin ein nicht vorhandenes Arrayelement versuche anzusprechen?

MfG

Edit: -1 passt da gar nicht, damit Unterschlage ich scheinbar das letzte Element
P.s.: Mit welchem BB-Tag streicht man Texte durch?\n\n

<!--EDIT|styx-cc|1177422353-->
Pörl.
bloonix
 2007-04-24 18:22
#76180 #76180
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=styx-cc,24.04.2007, 15:41]Aber muesste mein obiger Code dann nicht eine Warnung werfen, da ich ja bei scalar(@arrays2) das -1 vergessen habe und zum Ende hin ein nicht vorhandenes Arrayelement versuche anzusprechen?[/quote]
Nö. Du benutzt ja < und nicht <=.

Das Beispiel würde allerdings den letzten Index auslassen:

my $i=$[; $i<$#arrays2;$i++

hier muss ein <= hin\n\n

<!--EDIT|opi|1177424755-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Taulmarill
 2007-04-24 18:26
#76181 #76181
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
du zählst mit (my $i=0; $i<scalar(@arrays2);$i++) ja nicht bis der wert erreicht ist, sondern nur so lange, bis $i nicht mehr kleiner ist, daher passt das schon. ich würde die schleife so formulieren. for my $i ( $[ .. $#arrays2 ) {
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
PerlProfi
 2007-04-24 18:40
#76182 #76182
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Man sollte doch davon ausgehen können, dass $[ nicht verändert wird, oder ?
Ich jedenfalls schreibe immer 0 ist das irgendwie schlimm ?
pq
 2007-04-24 18:48
#76183 #76183
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=styx-cc,24.04.2007, 15:41]
P.s.: Mit welchem BB-Tag streicht man Texte durch?[/quote]
mit s: [s]test[/s]
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bloonix
 2007-04-24 18:50
#76184 #76184
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Weiß man, wer dran rum fummelt?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package Vodoo;

$[ = 20;

package main;

my @arrays1 = qw(w a f g b c j g r l);
my @arrays2 = qw(0 1 r 5 6 a l w f b g);

for my $cur (@arrays1) {
  for (my $i=$[; $i<=$#arrays2;$i++) {
     print "$i - $cur kommt an Stelle $i im 2. Array vor.\n" if ($cur eq $arrays2[$i]);
  }
}


27 - w kommt an Stelle 27 im 2. Array vor.
25 - a kommt an Stelle 25 im 2. Array vor.
28 - f kommt an Stelle 28 im 2. Array vor.
30 - g kommt an Stelle 30 im 2. Array vor.
29 - b kommt an Stelle 29 im 2. Array vor.
30 - g kommt an Stelle 30 im 2. Array vor.
22 - r kommt an Stelle 22 im 2. Array vor.
26 - l kommt an Stelle 26 im 2. Array vor.


Das ist wie mit dem Angle-Operator in einer while-Schleife. Wenn man ihn
benutzen möchte, sollte man vorher lokalisieren.\n\n

<!--EDIT|opi|1177426250-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2007-04-24 16:21.