Schrift
[thread]6659[/thread]

Aufgabenstellung: Eingabe von Zahlen!



<< >> 10 Einträge, 1 Seite
Gast Gast
 2005-01-24 19:24
#51240 #51240
Hallo zusammen,

wer kann mir bei der Aufgabenstellung weiterhelfen?

1. Schreiben Sie ein Skript welches um die Eingabe einer einstelligen Zahl (und fängt Strings oder mehrstellige Zahlen ab) bittet. Dann schreibt es die Zahl als Wort aus, also 2 als  zwei und 5 als fuenf und so weiter. Schließlich fragt es, ob Sie weitere Zahlen eingeben möchten und wenn ja, wiederholt es den gesamten Prozeß. Hier ein Beispiel, wie es ablaufen könnte:

% Zahlenbuchstabierer.pl
GebenSie die zu buchstabierende Zahl ein: buh
Keine Strings. Eine Zahl von 0 bis 9 bitte.
Geben Sie die zu buchstabierende Zahl ein: 45
Zu hoch. 0 bis 9 bitte.
Geben Sie die zu buchstabierende Zahl ein: 6
6 ist sechs.
Eine weitere Zahl versuchen(j/n)?: j
Geben Sie die zu buchstabierende Zahl ein: 3
3 ist drei.
Eine weitere Zahl versuchen(j/n)?: n

# Es wäre sehr nett, wenn jemand mir eine Lösung für mein Problem mir geben könnte.

Gruß
MK
renee
 2005-01-24 19:32
#51241 #51241
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Naja, eine Lösung wollen wir ja nicht gleich liefern, da das nicht allzuschwer ist und Du ja auch was lernen sollst...

Also hier mal ein paar Tipps:

Von der Standardeingabe (z.B. von der Konsole) liest man mit <STDIN>. Das brauchst Du, um vom Benutzer die Eingabe zu bekommen...

Abfragen, ob es eine einstellige Zahl ist, kannst Du mit einem Regulären Ausdruck...
lese hierzu
* perldoc perlre
* perldoc perlrequick
* perldoc perlretut
* http://regenechsen.de

Zur immer wiederholenden Abfrage musst Du eine while-Schleife benutzen...

Versuch mal ein bißchen rumzubasteln. Wenn dann immer noch Fragen sind, helfen wir gerne weiter...

Edit: Achja, für die Speicherung der ausgeschriebenen Zahlen nimmst Du am besten ein Hash. Was das ist, kannst Du z.B. aus dem Einführungskurs von Strat (http://fabiani.net -> Vorträge -> Einführung in Perl) erfahren...\n\n

<!--EDIT|renee|1106588240-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ronald
 2005-01-25 19:11
#51242 #51242
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Beim Einlesen einer Zeile wird das \n mitgeliefert.

Das kannst du mit "chomp" entfernen.
FC
 2005-01-25 21:10
#51243 #51243
User since
2005-01-25
8 Artikel
BenutzerIn
[default_avatar]
ich hab mal eine Beispiellösung gemacht.

Guckst Du hier
renee
 2005-01-25 22:34
#51244 #51244
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@FC: Da ist aber noch ein kleiner Fehler in Deiner Lösung...

Probier mal bei Deinem Programm "z6" einzugeben...


Code: (dl )
    if ($Eingabe !~ /[0-9]/){


muss richtigerweise
Code: (dl )
    if ($Eingabe =~ /\D/){
heißen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2005-01-26 00:31
#51245 #51245
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=renee,25.01.2005, 21:34]muss richtigerweise
Code: (dl )
    if ($Eingabe =~ /\D/){
heißen...[/quote]
oder
if ($Eingabe =~ tr/0-9//c){
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
FC
 2005-01-26 15:58
#51246 #51246
User since
2005-01-25
8 Artikel
BenutzerIn
[default_avatar]
[quote=renee,25.01.2005, 21:34]Probier mal bei Deinem Programm "z6" einzugeben...[/quote]
oh ... wie gemein :)
Danke
renee
 2005-01-26 16:03
#51247 #51247
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=FC,26.01.2005, 14:58][quote=renee,25.01.2005, 21:34]Probier mal bei Deinem Programm "z6" einzugeben...[/quote]
oh ... wie gemein :)
Danke[/quote]
Wenn man programmiert muss man mit allen "Gemeinheiten" der User rechnen ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
FC
 2005-01-27 03:00
#51248 #51248
User since
2005-01-25
8 Artikel
BenutzerIn
[default_avatar]
Quote
Wenn man programmiert muss man mit allen "Gemeinheiten" der User rechnen ;)

na jo .. das Script steuert nicht die die Startsequenz für eine atomare Langstreckenrakete
... aber es könnte der Unterschied zwischen "6 = Verzeichnisinhalt anzeigen" oder eben "0 = Alle Dateien löschen" sein. :)\n\n

<!--EDIT|FC|1106787728-->
Dubu
 2005-01-27 15:31
#51249 #51249
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=FC,27.01.2005, 02:00]
Quote
Wenn man programmiert muss man mit allen "Gemeinheiten" der User rechnen ;)

na jo .. das Script steuert nicht die die Startsequenz für eine atomare Langstreckenrakete[/quote]
Mit solchen Aussagen sollte man vorsichtig sein, denn was heute noch ein schneller Hack ist, wird morgen auf einmal in einer unternehmenskritischen Anwendung eingesetzt. ;)

Ein recht haeufiges Szenario: Es gibt ein Problem, das sich gut mit einem kleinen, schnell nebenbei gestrickten Perl-Programm loesen laesst, das im Kontext des jeweiligen Benutzers ausgefuehrt wird. Auf eine Ueberpruefung der Benutzereingaben gegen alle moeglichen Werte wird nicht sonderlich geachtet: Wer das Programm benutzt, schadet sich ja hoechstens selber, wenn er Unsinn eingibt.

Einige Zeit spaeter soll die Funktion dieses Programm ueber ein Webinterface zur Verfuegung gestellt werden. Jemand strickt ein CGI-Interface fuer das Programm, es wird auf dem Webserver installiert und ab da koennen es alle remote bedienen. Kurz danach wird der Webserver gehackt und wichtige Daten geloescht. Grund: Niemand hat daran gedacht, dass das Programm jetzt in einem anderen Kontext laeuft als der Webbrowser des Benutzers, der es aufgerufen hat.

Konkretes Beispiel: Ein system()-Aufruf in einem normalen Perlskript (ohne suid-Rechte o.ae.) ist nicht kritisch, wenn das Skript von der Kommandozeile aufgerufen wird, da der Benutzer alles, was er mit system() machen kann, auch gleich auf der Kommandozeile eingeben koennte. Wird das Skript aber im CGI-Kontext benutzt, dann kann ein unsicherer system()-Aufruf dem Benutzer einen Shellzugriff auf den Webserver geben, den er sonst nicht haette.
<< >> 10 Einträge, 1 Seite



View all threads created 2005-01-24 19:24.