Maison >développement back-end >tutoriel php >Comment puis-je créer une calculatrice PHP à l'aide de l'algorithme Shunting Yard ?

Comment puis-je créer une calculatrice PHP à l'aide de l'algorithme Shunting Yard ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-06 08:48:11653parcourir

How Can I Build a PHP Calculator Using the Shunting Yard Algorithm?

Comment créer une calculatrice en utilisant PHP

Problème :

Vous souhaitez développer une calculatrice PHP qui évalue des calculs algébriques simples expressions saisies par les utilisateurs en notation standard, affichant le processus d'évaluation. Le défi réside dans le calcul efficace de la valeur de l'expression.

Réponse :

Envisagez d'utiliser l'algorithme Shunting Yard pour sa simplicité et son efficacité dans l'évaluation des expressions algébriques.

Implémentation de l'algorithme de gare de triage

Expression Définitions :

Créez des classes pour représenter différents éléments de l'expression, tels que des parenthèses, des nombres, des opérateurs, etc. :

class Parenthesis extends TerminalExpression { ... }
class Number extends TerminalExpression { ... }
class Addition extends Operator { ... }
class Subtraction extends Operator { ... }
class Multiplication extends Operator { ... }
class Division extends Operator { ... }
class Power extends Operator { ... }

Implémentation de la pile :

class Stack {

    protected $data = array();

    // ... Methods for pushing, popping, and peeking from the stack ...
        
}

Exécuteur Classe :

La classe exécuteur analyse l'expression à l'aide de l'algorithme Shunting Yard et l'évalue :

class Math {

    // ... Fields and methods for parsing, running, and evaluating the expression ...
        
}

Exemple :

Voici un exemple d'utilisation de la calculatrice :

$math = new Math();

$answer = $math->evaluate('(2 + 3) * 4');
var_dump($answer);
// int(20)

$answer = $math->evaluate('1 + 2 * ((3 + 4) * 5 + 6)');
var_dump($answer);
// int(83)

Cet exemple couvre le regroupement et l'opérateur priorité. Cependant, vous pouvez personnaliser la mise en œuvre en fonction de vos besoins spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn