2011-12-01T14:41:39
ReallySorryAufgabe 1 läuft
zeig mal.
Was die zweit Aufgabe betrifft.
Du hast Grundsätzlich zwei Möglichkeiten sie zu lösen.
1. Lösche alles nicht "aeiou" aus dem String. Gebe den String aus
2. Such "aeiou" im String und gib es aus.
Beide Varianten sind völlig gleichwertig von der Aufgabenstellung her.
Nun hast du mehrere Möglichkeiten eines von beiden zu implementieren.
Du kannst reguläre Ausdrücke nutzen, oder du kannst "klassisch" vorgehen und jedes Zeichen im String einzeln untersuchen. Für einen Anfänger mag es einfacher sein jedes Zeichen zu prüfen. Aber du solltest dir definitiv anschauen wie man das Problem auch mit einer Regexp lösen kann.
Als kleine Hilfe mal eine Variante die ohne Regexp, welche gefundene Zahlen ausgibt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;
my $string="Das ist ein String mit der Zahl 192 darin!";
print qq!die Zahlen in "$string" sind: !;
my $index=0;
for my $index (0..length($string)-1)
{
my $char=substr($string,$index,1);
my $char_nr=ord($char);
print $char if($char_nr>=48 && $char_nr<=57);
}
print "\n";
man kann es auch anders schreiben:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;
my $string="Das ist ein String mit der Zahl 192 darin!";
print qq!die Zahlen in "$string" sind: !;
for my $char (split(//,$string))
{
my $char_nr=ord($char);
print $char if($char_nr>=48 && $char_nr<=57);
}
print "\n";
oder
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;
my $string="Das ist ein String mit der Zahl 192 darin!";
print qq!die Zahlen in "$string" sind: !;
my $index=0;
for my $index (reverse (0..length($string)-1) )
{
my $char=substr($string,$index,1);
my $char_nr=ord($char);
substr($string,$index,1,'') unless($char_nr>=48 && $char_nr<=57);
}
print "$string\n";
oder ganz kurz mit einem Regulären Ausdruck:
use strict;
use warnings;
my $string="Das ist ein String mit der Zahl 192 darin!";
print qq!die Zahlen in "$string" sind: !;
$string=~s/\D//gs;
print "$string\n";
oder suchen mit einem Regulären Ausdruck:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;
my $string="Das ist ein String mit der Zahl 192 darin!";
print qq!die Zahlen in "$string" sind: !;
my $index=0;
while($string=~m/(\d+)/gc)
{
print $1;
}
print "\n";
Und bei den regulären Ausdrücken kannst du sehen, warum es so wichtig ist die zu beherrschen. Man spart sich viel Arbeit und Code, wenn man sie benutzen kann. Und die Beispiele oben sind ganz einfache Konstrukte. Bei komplizierteren Problemen kann man anstatt einer Zeile Regexp 1000 Zeilen Code schreiben.
EDIT:
Wenn du dich verleitet fühlst mit meinem Code als Basis weiter zu machen. Der Code ist nur bedingt auf dein Problem anpassbar.
Last edited: 2011-12-01 18:04:55 +0100 (CET)