Posts mit dem Label S54 werden angezeigt. Alle Posts anzeigen
Posts mit dem Label S54 werden angezeigt. Alle Posts anzeigen

Sonntag, 14. Februar 2010

S54/3 - Wortliste alphabetisch sortieren (ASCII)

Wörter werden vom Benutzer nacheinander, durch ENTER getrennt, eingegeben. Das Prgramm soll diese alphabetisch (bzw ASCII-betisch) sortieren und ausgeben.

#!/usr/bin/perl

print "\nBitte Worte eingeben, durch Enter getrennt, Beenden mit Strg-D.\n";
@worte = ;
@sortiert = sort @worte;

print @sortiert;


Eine weitere Möglichkeit:

#!/usr/bin/perl
#Zweite Version, Sortierte Liste in einer Zeile ausgeben!
print "\nBitte Worte eingeben, durch Enter getrennt, Beenden mit Strg-D.\n";
chomp(@worte = ); #Worte liegen jetzt ohne \n in der Liste!
@sortiert = sort @worte;

# Leerzeichen an jedes Element anfügen:
foreach $sortiert (@sortiert)
{
$sortiert = $sortiert . " "; # Frage: warum nicht mit "+=" lösen möglich? vgl S.29!
}

# Ausgabe der kompletten Liste:
print "\nSortierte Worte: ",@sortiert,"\n";


Eine Frage, die mir noch offen geblieben ist: warum wird das Komma bei der Ausgabe der kompletten Liste benötigt?

S54/2 - Wörter einer Zahl zuordnen und ausgeben

In dieser Aufgabe von Seite 54 sollen Zahlen fest einem Wort zugeordnet (hardcoded) werden. Der Benutzer soll die 7 Zahlen in beliebeiger Reihenfolge eingeben, die Ausgabe der korrespondierenden Wörter erfolgt dann genau in dieser Reihenfolge.

#!/usr/bin/perl -w
# Aufgabe: Nummern einlesen in Liste und Ausgabe der passenden Namen.
@namen = qw! fred betty barney dino wilma pebbles bamm-bamm !;

print "Bitte Nummern von 1 bis 7 eingeben, durch ENTER getrennt: ";
chomp(@eingabe = ); # Eingabe beenden durch Strg-D.

foreach $eingabe (@eingabe)
{
print $namen[$eingabe - 1] . "\n";
# Frage: warum nicht (Perl gibt Verbesserungsvorschlag!)?:
# print @namen[$eingabe - 1] . "\n";
}

Freitag, 12. Februar 2010

Aufgabe S54/1: Liste einlesen und rückwärts ausgeben

Seite 54, Aufgabe 1

Schreiben Sie ein Programm, dass mehrere Worte (strings) Zeilenweise einliest (getrennt durch Enter-Taste). Nach Beendigung der Eingabe (end-of-input, zB durch Tastenkombination Strg-D (Linux) oder Strg-Z (Windows)) sollen die Worte in Umgekehrter Reihenfolge ausgegeben werden.

#!/usr/bin/perl -w

@lines = ; # Abbrechen mit Strg-D!

@lines = reverse @lines;
print "Rueckwaertsausgabe:\n";
print @lines;