• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Schulprojekt "Taschenrechner mit Stringfunktionen"

Zupi

Mitglied
Hallo.

Ich muss für die Schule einen "kleinen" Taschenrechner programmieren. Dieser soll zwar nicht Wurzel und so können, aber die Rechenarten +-*/ und negative Zahlen. Allerdings haben wir die Aufgabe, dies "benutzerfreundlich" zu lösen. Sprich wir sollen ein Eingabefeld haben, wo man z.B. 12+9 eingeben kann, aber auch 12+8*9-6*-9+8/4 :D Da wir zurzeit das Theme "Zeichenketten/Datentypen" durchnehmen, sollen wir diese möglichst mit den ganzen String-Funktionen lösen. Ich habe mir hier andere Beiträge angeschaut, wo ich dann auf eval() oder ähnliches gestoßen bin, was wir nicht machen dürfen.

Habt ihr Tipps, vllt, auch Seiten die das Beschreiben. Wäre wichtig für mich ;)

PS: Mit Stringfunktionen meine ich diese hier: PHP: String-Funktionen - Manual
 
also mit der aufgabenstellung die jetzt hier schreibst ist das kaum lösbar.
Natürlich ist das lösbar. Allerdings halte ich das für ein Schulprojekt für leicht überzogen.

Der String muss halt Zeichenweise durchgeparst werden, um die Operatoren zu finden, weil ein explode hier nicht weiterhilft. Da ich leider kein Spezialist in Sachen regulärer Ausdücke bin, kann ich nicht beurteilen, ob es nicht ein RegExp gibt, um da weiterzukommen.
 
Hallo @bdt600,

Natürlich ist das lösbar. Allerdings halte ich das für ein Schulprojekt für leicht überzogen.
das meinte ich auch damit.

Mit RegExp bestimmt aber ist halt nicht gerade das einfachste und gerade Rechner, da kommt ja noch Punkt vor Strich.
Da musst also zuerst alles vernünftig aufteilen und dann das alles duch ein paar funktionen jagen zwegst zuerst Punkt und dann Strich.
Eingaben musst ja auch prüfen , abnstelle . oder zweimal * und und........

Cheffchen
 
Leider mit eval, aber ansonsten absolut Klasse:
PHP:
<?php
function repl($match){
  eval('$erg='.$match[1].';');
  return $match[0].'='.$erg;
} 
$str = "12+8*9-6*-9+8/4";
echo preg_replace_callback('#([\d\.\+\-\*/\(\) ]+)#','repl',$str); 
?>
Damit könnte man jeden Lehrer beeindrucken :D

Zur Info: der Quellcode ist nicht von mir, den habe ich gerade im Netz gefunden.
 
Zurück
Oben