Thread Ein kleiner Taschenrechner
(5 answers)
Opened by DuDe at 2008-03-13 16:32 Das sieht unschön aus. Das was du willst ist es das newline Zeichen am ende zu entfernen. chop() entfernt aber einfach das letzte Zeichen. Egal was es ist. Es ist also besser chomp() zu verwenden. Das entfernt nur das Newline Zeichen am Ende des Strings. Wenn keins vorhanden ist, dann wird nichts entfernt. Das ganze kannst du dann noch kombinieren. Code (perl): (dl
)
chomp( $z1 = <STDIN> ); Code (perl): (dl
)
system(cls); Sorry, aber was soll der blödsinn? Wenn ich ein programmaufrufe will ich nicht das dieser mein ganzen Bildschirm löscht. Sowas komplett aus dem Programm rausschmeißen. Ich weiß auch gar nicht warum jeder Anfänger ständig so ein Müll einbaut! Bildschirm löschen, Sinnlose Menüs aufbauen... Weiterhin solltest du kein system() nutzen. Dadurch wird dein programm komplett unportabel. "cls" z.B. gibt es unter Linux gar nicht, und du bekommst dann eine Fehlermeldeung. Weiterhin kannst du dir auch gar nicht sicher sein ob solche Kommandos überhaupt das tun was du überhaupt möchtest. Code (perl): (dl
)
1 2 3 4 5 print "###################################################\n"; print "\t Welcome to the first Perlscript by DuDe\n"; print "###################################################\n\n"; print "[1] Addition\n[2] Subtraktion\n[3] Division\n[4] Multiplikation\n\n"; print "Was fuer eine Rechnung wollen sie durchfuehren: "; Hmmpf, versuche es mal ohne Menü hinzubekommen. Indem der Benutzer einfach simple Sachen wie "13 + 12" eingibt etc. Weiterhin Würde ich diese Überflüssigen Raute Zeichen komplett weg lassen. Die will keiner sehen. Weiterhin kannst du auch den String Multiplikator nutzen was deutlisch schöner ist. beispielweise. Code (perl): (dl
)
print '#' x 40, "\n"; Was dann 40ig Raute Zeichen gefolgt von einem Newline Zeichen ausgiebt. Code (perl): (dl
)
$art $z1 $z2 $sol $sol2 Deine ganze Variablen sind total nichtsaussagend! Bitte überarbeite diese, damit sie selbsterlärend sind. 1) Code bitte Einrücken! Damit wird dieser deutlich lesbarer. 2) Es gibt ein Unterschied zwischen eq und ==. "eq" benutzt man wenn man zwei Strings vergleichen möchte. == benutzt man wenn man Zahlen vergleichen möchte. Zwar hast du mit "1" einen String. Aber eigenltich willst du ja eher Zahlen vergleichen. Ansonsten kannst du auch printf() nutzen wie du oben siehst. Dort ist das erste Argument ein Template. "%lf" ist hier ein Platzhalter. Für diesen Platzhalter wird das erste Argument eingesetzt. Was hier $z1 + $z2 ist. Du kannst auch mehrere Platzhalter verwenden. DIeser werden dann der Reihenfolge abgearbeitet. Wenn dir printf() noch zu kompliziert ist dann ist es nicht schlimm. Informationen hierzu findest du unter "perldoc -f sprintf". Du kannst aber auch deine Möglichkeit weiterhin benutzen. Code (perl): (dl
)
system(pause); Wie oben bereits schonmal gesagt unportabel und sollte man nicht nutzen. Unter Linux gibt es den Befehl "pause" ebenfalls nicht. Entweder du nutzt soetwas überhaupt nicht. Also gar keine Abfrage das der Benutzer eine taste drücken soll. Oder du schaust dir mal das Modul Term::ReadKey an. Das sollte eine Portable Möglichkeit dafür bereitstellen. Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|