Archiv verlassen und diese Seite im Standarddesign anzeigen : Taschenrechner..
Ich möchte einen Taschenrechner programmieren,
allerdings habe ich keinen Plan wie ich dabei vorgehen soll.
Es soll nur ein Input- und ein Submit-Field geben.
In das Inputfield kann dann eine beliebige Formel eingeben, die dann berechnet werden soll.
Nun die Frage. Wie muss ich dabei vorgehen? Es muss schließlich nach einigen Regeln gehen. Erst Punkt-, dann Strichrechnung. Etc.
Habt ihr soetwas schonmal gemacht?
Ich bin über jede Hilfe dankbar.
ps. ich nehme an, dass ich die Formel via Regex zerlegen muss, weiss aber nicht wie ich sinnvoll dabei vorgehen muss.
boris-schneider 26-04-2006, 18:34 Wie stellst du dir denn den aufbau vor ?
Wenn du es wie einen richtigen Taschenrechner aufbauen möchtest empfielt sich Javascript sehr gut dazu mit seinen Eventhandlern etc.
PS: Flash ist natürlich auch sehr gut dafür geeignet.
Sers
Der Boris
Wir sind hier im PHP-Forum oder nicht?
Und nein, ich möchte den Taschenrechner auch nicht in Assembler schreiben.
boris-schneider 26-04-2006, 18:40 Okay,
ich frage lieber nochmal nach, nicht das dann erst nach 20 Postings sich rausstellt das du eigentlich was ganz anderes vor hattest :D
Also was die regeln angeht wird das sicherlich aufwendig werden, if-else abfragen gepart mit regex mustern etc.
Mir pers. wäre das zu aufwendig :D
Wobei dieses vorhaben sicherlich auch eine herausforderung darstellt :D
Sers
Ders Boris
weiss denn hier keiner was... :(
Patrick_PQ 27-04-2006, 12:34 Hallo uschi,
ich würde folgendes versuchen:
zuerst alle Operatoren (+-*/ usw) die du zulassen möchtest definieren
dann anhand der Operatoren zerlegen und die jeweiligen Zahlen dazu sortieren
ein Array mit den Operatoren und ihrer Ausführungsreihenfolgen (Punkt-vor-Strich usw.) anlegen und dein zerlegtes Ergebnis danach sortieren
dann der Reihe nach auflösen
Hallo uschi
Hab' sowas schon mal gemacht.
Aber nicht "richtig".
Ich hab' gemogelt und einfach ein SQL-Command draus gemacht, z.B.:
select 3*(4+5/6) as DasErgebnis
Die ganze Zerpflückerei macht dann der SQL-Server :D
florian1x 18-05-2006, 15:48 also ich empfehle delphi und einen turbopascalbuilder
dann kannste den als exe zu,m dl anbierten ^^
florian1x 18-05-2006, 15:52 sol ldass ding denn nur ganz normal rechnen können doer auch noch quadrieren wurzel ziehen usw weil, dass was du wills find ich nicht grad schwer. Punkt vor strich hat man ja eigentlich sowieso......
ich finds echt net schwer und bin ein voll noob
@ florian1x
[X] Ich blick das Problem nicht
[X] Ich hab' im Delphi showmessage(floattostr(2+3*5)); geschrieben und es hat funktioniert
[X] Ich hab' ein ungeregeltes Mitteilungsbedürfnis
eval('$erg = ' . $_POST['formel']);
sollte klappen.
und uschi: Bitte n bisschen freundlicher.
Ach, ich mag grad keinen neuen Thread eröffnen zum selben Thema, also hier:
Könnt mir mal jemand sagen wo hier alles genau die Fehler sind? Das mit meinem Taschenrechner klappt nämlich nicht so ganz. :dontknow:
Hab erst seit einigen Woche meine ersten Schritte in Richtung PHP gemacht, darum verzeiht mir meine unfähigkeit.
<html>
<head>
<title>Taschenrechner PHP</title>
<style type="text/css">
<!--
.Stil1 {font-size: 10px}
.Stil4 {
font-size: 24px;
font-weight: bold;
}
.Stil5 {
font-size: 14px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.Stil6 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
-->
</style>
</head>
<body bgcolor="black" text="white">
<center>
<span class="Stil4">Taschenrechner</span><br>
<br>
<?PHP
if ($operator == "plus")
{
$ergebnis = $wer1 + $wer2;
}
else if ($operator == "minus")
{
$ergebnis = $wert1 - $wert2;
}
else($operator == "mal")
{
$ergebnis == $wert1 * $wert2;
}
if ($operator == "geteilt")
{
$ergebnis = $wert1 / $wert2;
}
echo "(Ergebnis:" == $ergebnis")";
?>
<form action method="post">
<p>Zahl1: <input type="text" name="wert1" size=30 maxlength=50>
</p>
<p>Zahl2: <input type="text" name="wert2" size=30 maxlength=50>
</p>
<p>
<input type="submit" name="operator" value="+" />
<input type="submit" name="operator" value="-" />
<input type="submit" name="operator" value="*" />
<input type="submit" name="operator" value="/" />
</span>
</p>
</form></center>
</body>
</hmtl>
Wäre echt nett, wenn mir da mal jemand das erklären könnte und mir gleich sagen könnt wie ich das machen muss, denn nach 2 Wochen bin ich echt genervt ab meiner eigenen unfähigkeit.
jahlives 22-09-2006, 18:37 @uschi
Warum denn nur in HTML und PHP ? Das würde doch mit JS wesentlich einfacher umzusetzen sein. V.a. weil du nicht immer einen Request an den Server schicken musst.
Also in php wie bereits von den Vorpostern geschrieben, in JS einfach mal http://de.selfhtml.org/javascript/beispiele/taschenrechner.htm
Gruss
tobi
Ähm meinst du die uschi oder mich? ^^
jahlives 22-09-2006, 18:56 Ähm meinst du die uschi oder mich? ^^
Nö. Wenn ich dich gemeint hätte, hätte ich geschrieben:
"Was genau funzt denn nicht? Etwas ausführlicher dürftest du schon sein. Meine Glaskugel vermutet ein Problem mit register_globals. Dazu findest du bei der SuMa deiner Wahl sicherlich genügend Infos."
Gruss
tobi
Ah okay, ich hab mich nämlich gewundert, weil der letzte Post hier war einige Monate alt.
Auusserdem klappt das mit dem Ergebnis nicht so.. eig. gar nicht.. aber nya.. sonst .. ich glaub irgendetwas hab ich beim lesen verpasst..
jahlives 22-09-2006, 19:42 @yael
Schreib mal folgendes in deinen Code
<?php
error_reporting(E_ALL);
var_dump($_POST);
if ($operator == "plus")
{
$ergebnis = $wer1 + $wer2;
}
else if ($operator == "minus")
{
$ergebnis = $wert1 - $wert2;
}
else($operator == "mal")
{
$ergebnis == $wert1 * $wert2;
}
if ($operator == "geteilt")
{
$ergebnis = $wert1 / $wert2;
}
//Ach ja und hier machst du einen Vergleich und keine Zuweisung.
//was willst du mit dieser Zeile denn erreichen
echo "(Ergebnis:" == $ergebnis")";
//besser wäre es imho den String zu verknüpfen also
echo 'Ergebnis:'.$ergebnis;
?>
Spuckt er nun Fehlermeldungen aus ? Wenn ja welche ? Wird der var_dump() angezeigt ?
Gruss
tobi
subabrain 22-09-2006, 23:24 so hehe willsch auch mal mein Saft dazu geben ... also ich meine doch das PHP alle notwendigen mathematischen Funktionen bietet um damit auch nen TR zu programmieren.
weiter sollte man auch beachten das wenn js verwendet wird alle den TR Code einsehen können.
natürlich kann man js bzw. ajax verwenden um die bedienbarkeit zu vereinfachen.
so das mal dazu :cool:
gruß
Robert
@yahlives:
Keine Fehlermeldung und auch var_dump() wird nicht angezeigt. Ich seh einfach kein Ergebnis oO
Du hast das Formular aber schon abgesendet???
<form action-v- method="post"> Hier fehlt aber noch einiges. Definiere das Formular mal richtig. Dann sollte es gehen.
wenn mal andere danach suchen hier nen kleinen rechner
/** Script von Manfred Bulmahn
Billard & Dartsportcenter
www.bds-sport.de
**/
// ankommende werte mit übernahme vorhandener werte
$art = $_GET["art"];
$wert = $_GET["wert"];
$wert1 = $_GET["wert1"];
$text3 = $_GET["zahl"];
$text2 = "$wert$text3";
$enter = $_GET["enter"];
$art2 = $_GET["art2"];
if ($art == "" and $wert1 == ""){ $erste="$text3"; }
if ($art == "" and $wert1 == "" and $wert <> ""){ $erste=$text2; }
if ($art <> "" and $wert1 <> "" and $text3 <> ""){ $erste=$text2; }
$text1 = $erste;
// die endfunktion /////////////////////////
if ($enter == "enter" ) {
$wert1=sprintf("%01.2f",$wert1);
$wert=sprintf("%01.2f",$wert);
if ($art == "-") { $ergebnis =$wert1-$wert; }
if ($art == "/") { $ergebnis =$wert1/$wert;}
if ($art == "*") { $ergebnis =$wert1*$wert;}
if ($art == "plus") { $ergebnis =$wert1+$wert;}
$erste=sprintf("%01.2f",$ergebnis);
}
if ($art2 == "prozent")
{ $ergebnis1 = $wert1/100; $ergebnis2 = $ergebnis1*$wert;
if ($art == "-") { $ergebnis =$wert1-$ergebnis2; }
if ($art == "/") { $ergebnis =$wert1/$ergebnis2;}
if ($art == "*") { $ergebnis =$wert1*$ergebnis2;}
if ($art == "plus") { $ergebnis =$wert1+$ergebnis2; }
$erste=sprintf("%01.2f",$ergebnis); }
////////////////////////////////////////////////////////////////////////////////////////////////
// Der aufbau des Rechners
print "
<div align=\"center\"><input type=\"hidden\" size=\"16\" name=\"textfeld2\" value=\"$wert1\">
<input type=\"hidden\" size=\"16\" name=\"textfeld3\" value=\"$art\">
<table width=\"1%\">
<td colspan=\"4\"><input type=\"text\" name=\"textfeld1\" style=\"text-align: right; font-weight: bold; width: 122\" value=\"$erste\"></td><tr>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=7\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"zahl\"color: #FF0000;\" value=\"7\"> </td> </form>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=8\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"acht\"color: #FF0000;\" value=\"8\"> </td> </form>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=9\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"neun\"color: #FF0000;\" value=\"9\"> </td> </form>
<td><form action=\"re.php?wert=$text1&wert1=$text1&art=/\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"geteilt\"color: #FF0000;\" value=\"/\"> </td> </form> <tr>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=4\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"vier\"color: #FF0000;\" value=\"4\"> </td> </form>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=5\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"funf\"color: #FF0000;\" value=\"5\"> </td> </form>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=6\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"sechs\"color: #FF0000;\" value=\"6\"> </td> </form>
<td><form action=\"re.php?wert=$text1&wert1=$text1&art=*\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"mal\"color: #FF0000;\" value=\"x\"> </td> </form> <tr>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=1\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"eins\"color: #FF0000;\" value=\"1\"> </td> </form>
<td> <form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=2\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"zwei\"color: #FF0000;\" value=\"2\"> </td></form>
<td><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=3\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"drei\"color: #FF0000;\" value=\"3\"> </td> </form>
<td><form action=\"re.php?&wert=$text1&wert1=$text1&art=-\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"minus\"color: #FF0000;\" value=\"-\"> </td></form> <tr>
<td colspan=\"2\"> <form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=0\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 40pt; font-size: 12pt; name=\"null\"color: #FF0000;\" value=\"0\"> </td></form>
<td> <form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&zahl=.\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"komma\"color: #FF0000;\" value=\".\"> </td></form>
<td><form action=\"re.php?wert=$text1&wert1=$text1&art=plus\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"plus\"color: #FF0000;\" value=\"+\"> </td></form><tr>
<td colspan=\"2\"><form action=\"re.php?art=$art&wert1=$wert1&wert=$text1&enter=enter\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 40pt; font-size: 12pt; name=\"enter\"color: #FF0000;\" value=\"Enter\"> </td></form>
<td><form action=\"re.php?wert=$text2&wert1=$wert1&art2=prozent&art=$art\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"prozent\"color: #FF0000;\" value=\"%\"> </td></form>
<td colspan=\"1\"><form action=\"re.php\" method=\"post\"> <input type=\"submit\" style=\"height: 20pt; width: 20pt; font-size: 12pt; name=\"c\"color: #FF0000;\" value=\"C\"> </td></form>
</div>
";
?>
//////////////////////////////////////////////////////////////////////////////////////
um den rechner zu starten habe ich dieses beispiel angewendet.
einbau des scripts in die seite von der aus der rechner gestartet werden soll!
die seite mit dem rechner wird als kleines fenster geöffnet.
<html>
<head>
<title></title>
<script type="text/javascript">
function loadWindow(adress,x,y) {
newwindow = window.open(adress, "", "Width="+x+",Height="+y);
newwindow.focus();
}
</script>
</head>
<body>
<div align=\"center\"> <form action=\"re.php\" onclick=\"loadWindow(this.action,148,220 );return false; top=500,screenX=100,left=500,screenY=100; return false\">
<input type=\"submit\" style=\"background-color:#D8D8D8; width:70\" value=\"Rechner\"></div>form>
</body>
</html>
|
|