1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print "Bitte schreiben Sie irgendetwas!\n";
$zufall = <STDIN>;
chomp($zufall);
print "\nSie haben eingegeben: $zufall\n\n";
{
my @zeichen = split (//, $zufall);
my $anzahl_der_zeichen = scalar(@zeichen);
print "Es wurden $anzahl_der_zeichen gefunden\n";
for (my $i = 0; $i < $anzahl_der_zeichen / 2; $i++) {
print "$zeichen[$i]";
}
print "\n";
}
for (my $i = $anzahl_der_zeichen / 2; $i < $anzahl_der_zeichen 2; $i++) {
2017-04-15T12:24:38 Coruno95Hm ... Also die Anzahl der Zeichen habe ich ja, und die wird mir auch korrekt ausgegeben.
Gebe ich ein Wort mit 6 Zeichen ein, bekomme ich die Angabe, dass das Wort 6 Zeichen hat.
Im nächsten Schritt wird diese 6 durch 2 geteilt (Trennung der Zeichenkette in zwei etwa gleichgroße Teile).
Ausgegeben werden mir dann die ersten drei Zeichen des vorher eingegebenen Wortes.
Beispiel:
Eingabe: Haus
Ausgabe 1: "Es wurden 4 Zeichen gefunden."
Ausgabe 2: Ha
Ich möchte jetzt aber auch noch die anderen zwei Zeichen ("us") unter einer Variable ausgegeben bekommen. Und hier weiß ich nicht, wie ich fortfahren/das Script modifizieren soll.
1 2
print "Erste Hälfte:".join('',$zeichen[0..int(@zeichen/2)])."\n"; print "Erste Zweite:".join('',$zeichen[int(@zeichen/2), $#zeichen])."\n";
2017-04-15T12:15:33 rostiAlso guck Dir zunächst das Modul Encode an was Dir den Umgang mit Strings einer bestimmten Zeichenkodierung überhaupt erst ermöglicht.
2017-04-15T15:14:12 hlubenow2017-04-15T12:15:33 rostiAlso guck Dir zunächst das Modul Encode an was Dir den Umgang mit Strings einer bestimmten Zeichenkodierung überhaupt erst ermöglicht.
Bei solchen Hausaufgaben kannst Du davon ausgehen, daß Spezialfälle in der Encodierung nicht das Thema sind, das gelöst werden soll, so daß man das getrost vernachlässigen kann.
Wenn er sich als Anfänger das Modul Encode anguckt, dürfte er komplett verwirrt werden und seine Hausaufgabe, die wie gesagt von etwas ganz Anderem handelt, nicht meistern.
2017-04-15T16:43:32 rostiDoch, das Encoding ist beim Umgang mit Zeichenketten das Allererste Thema.
QuoteDie Aufgabe ist die Erstellung eines Programms, welches erst eine Texteingabe des Users erwartet,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
#!/usr/bin/perl # Alle Warnungen an und Strikter Code: use strict; use warnings; # Code ist UTF-8 kodiert use utf8; # ein und ausgabe auf UTF-8 stellen: binmode(STDIN, 'encoding(UTF-8)'); binmode(STDOUT, 'encoding(UTF-8)'); # Ab hier sind alle Eingabe-Strings Perl-utf8 kodiert. # (perl verwendet intern ein abgewandeltes UTF-8 zur Zeichenkodierung) # und split, length, etc wird nicht an bytes splitten oder messen # sondern an Zeichen, auch wenn diese aus mehreren Bytes bestehen. # Ausgaben werden von Perl-utf8 auf UTF-8 gewandelt # Von der eingabe lesen: print "Bitte schreiben Sie irgendetwas!\n"; my $zufall = <STDIN>; chomp($zufall); # Testausgabe print "\nSie haben eingegeben: $zufall\n\n"; { # Aufteilen des Strings my $length = length($zufall) ; my $half = int($length / 2); # testweise ausgeben: print "Länge: $length = ( $half + ".($length-$half)." )\n"; # String splitten my $zufall_1 = substr($zufall,0,$half); my $zufall_2 = substr($zufall,$half); # und die Hälften ausgeben: print "Erste Hälfte :$zufall_1\n"; print "Zweite Hälfte:$zufall_2\n"; }
2017-04-15T21:55:49 Coruno95Könntest du mir vielleicht noch erklären, wie int() hier funktioniert?
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/perl use warnings; use strict; my $a = 7; my $b = $a / 2; print "$b\n"; my $c = sprintf("%d", $b); print "$c\n";
QuotePerl unterscheidet ja eigentlich nicht zwischen Integern, Float und...
2017-04-15T09:54:01 Coruno95Die Aufgabe ist die Erstellung eines Programms, welches erst eine Texteingabe des Users erwartet, diese dann in zwei (etwa) gleichgroße Teile teilt, welche ich dann weiter modifizieren kann.
QuoteDie Nachrichten: Nach dem Willen der Regierung soll die Arbeitslosenzahl bis zum Jahr 2000 halbiert werden.
Sie heißt dann nur noch Osenzahl.