Maison  >  Article  >  développement back-end  >  Exemple de fonction de php implémentant une calculatrice avancée (basée sur la pile)

Exemple de fonction de php implémentant une calculatrice avancée (basée sur la pile)

黄舟
黄舟original
2017-09-16 09:14:101864parcourir

Cet article présente principalement la fonction de calcul avancée implémentée par PHP basée sur la pile, impliquant la définition de la pile PHP et les techniques d'exploitation associées pour utiliser la pile pour effectuer des opérations numériques. Les amis dans le besoin peuvent se référer à ce qui suit

.

Les exemples de cet article décrivent l'implémentation basée sur la pile PHP de fonctions avancées de calculatrice. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Lorsque nous obtenons une expression d'opération de chaîne, comment obtenons-nous le résultat de son opération ?

À l'heure actuelle, nous pouvons utiliser l'algorithme de pile pour résoudre ce problème de manière très intelligente.

L'idée est la suivante : (Nous utilisons la boucle substr de la fonction php pour intercepter cette expression d'opération de chaîne, et retirons la valeur de cette chaîne à son tour [nous devons intercepter à partir du premier caractère], nous allons commencer à intercepter la position Définissez-la comme une variable à croissance cyclique, initialisée à [$index=0]). En même temps, nous devons créer deux piles, une pour stocker les nombres [$numStack] et une pour stocker les opérateurs [$ operStack] Nous en avons également besoin d'un qui puisse juger s'il s'agit d'une fonction de symboles arithmétiques, mettre chaque valeur interceptée dans cette fonction personnalisée et renvoyer un identifiant qui peut être distingué comme un nombre ou un opérateur. En jugeant cet identifiant, il est déterminé si. la valeur est un nombre ou un opérateur. S'il s'agit d'un nombre, insérez la pile de nombres, et s'il s'agit d'un opérateur, insérez la pile de symboles. Si vous insérez la pile de chiffres, vous pouvez l'insérer directement, mais la pile de symboles nécessite un traitement spécial [[Si la pile de symboles est vide, insérez-la directement, pas vide : nous devons comparer la priorité d'opération du symbole inséré avec les symboles dans la pile (peut être défini Une fonction pour déterminer la priorité du symbole. Supposons que * et / valent 1 et + et - sont supposés être 0. Supposons que les nombres plus grands ont une priorité plus élevée, de sorte que la priorité de l'opérateur puisse être obtenue Quand). la priorité du symbole à insérer est inférieure ou égale à La priorité de l'opérateur en haut de la pile fait sortir deux valeurs de la pile de nombres fait sortir un opérateur de la pile de symboles pour opérer sur elles] <.>

Ce qui suit est un exemple PHP [se référer au tutoriel sur l'algorithme PHP du professeur Han Shunping]


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