Thread Multiplikator nach Eingabe von Teiler berechnen *war 2 Aufgaben, die nur... (9 answers)
Opened by ReallySorry at 2011-12-01 00:27

topeg
 2011-12-01 17:58
#154601 #154601
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2011-12-01T14:41:39 ReallySorry
Aufgabe 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:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
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:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
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
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
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:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
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:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
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)

View full thread Multiplikator nach Eingabe von Teiler berechnen *war 2 Aufgaben, die nur...