El número de novia del instituto, que pasó 15 minutos con una pila ella escribió una calculadora

hace Hutchison

Novia dijo: "El elevado número de muy difícil, muy difícil para mí ver hace poco, que me ha enviado un regalo para mí, me hace feliz por ello que supongo que lo que quiero .."

Pensé por un largo tiempo, de los libros a los zapatos a la electrónica a los artículos para el hogar últimos, sin sentir nada, y luego dijo: "Usted dice que desea enviar Han, lo que lo compraré"

Supongo que ella insistió: "No, usted tiene que decir un regalo, y este regalo a su personalidad para hacerlo."

Por lo tanto, seriamente, cojo el teléfono, Taobao compras durante unos minutos, pero todavía no podía pensar en lo que sale deficiencias, y, finalmente, no hay manera: "Bueno, si realmente quieres que envíe algo, entonces puedo ayudarle escribir una calculadora que ".

El título del artículo es sólo un truco, como un amoroso estudiantes de tecnología de la comunicación, debemos estar a la tierra, lo que asegurará que el contenido del artículo está seco!

Principios de diseño

El infija entrada expresión aritmética por la estructura de marco de pila, para lograr la conversión en la salida de sufijo, y luego da salida al resultado del cálculo a la expresión de sufijo. El diseño final de una calculadora.

Alcance: + - * / decimal negativo número entero%

ideas de diseño

Diseño lógica

  1. El establecimiento de dos pilas, pilas de pila y pila Nodo
  • pila pila para almacenar un conjunto de caracteres, elementos de carácter almacena expresiones infijos.
  • array Nodo de pilas para el almacenamiento de doble precisión el tipo de punto, el valor de los valores de los elementos almacenados expresiones infijos y operación aritmética de cada elemento flotante.
  1. El diseño de las siguientes dos funciones y el funcionamiento del pop pila respectiva.
nombre de la función parámetros efecto
Mtf_function () char * p1, char * mediados, char final * sufijo infija para la rotación
Caculate () pila * M, char final * cálculo del valor de la expresión de Postfix

Mtf_function () diseño de la función

(Pila para apilar)

Created with Raphaël 2.2.0 开始 如果遇到操作数,直接将其输出 左括号? 遇到左括号时将其放入栈中 右括号? 遇到右括号时将,弹出栈的操作符直到遇到左括号 从栈中弹出元素直到遇到更低优先级的元素 yes no yes no

(1) si se encuentra el operando, las salidas directas.

(2) Si se encuentra con el operador, a continuación, vamos a ponerlo en la pila encontrado paréntesis izquierdo puso en la pila.

(3) Si se encuentra con un paréntesis, a continuación, hacer estallar los elementos de la pila, la salida del operador emergente hasta que encuentra un paréntesis izquierdo hasta el momento. Tenga en cuenta que el paréntesis izquierdo es no sólo la salida emergente.

(4) Si usted tiene cualquier otro operador, tales como ( "*", "(") o similares, está elevado desde la pila hasta que se encuentra el elemento hasta que el elemento de prioridad más baja (o pila está vacía) encontraron "+" siguiente. después de estos elementos pop, se encontrará con el operador inserta en la pila. es importante tener en cuenta que sólo en la cara ")" la situación nos pop "(" de lo contrario no se abrirá. " ( ".

(5) Si usted lee el final de la entrada, y luego sacar la pila de todos los elementos en turno.

Caculate () diseño de la función

(Pila de pila para el Nodo)

1) la expresión de recorrido, digital encontró por primera vez colocado en la pila

operador 2) El operador entonces lee "+", a continuación, el elemento superior y el siguiente elemento emergente, realiza la operación aritmética correspondiente, el resultado del cálculo se presiona en la pila.

3) leer el siguiente elemento, que se coloca directamente en la pila.

4) para leer el siguiente elemento, como " ", POP el elemento superior y el siguiente elemento, realiza 8 5 realiza una operación aritmética que corresponden al resultado del cálculo ...... prensadas en la pila y así sucesivamente. Por último, encontrar el valor existe en la parte superior de la pila.

Para el procesamiento de los algoritmos de punto decimal

  1. Principio: primero en un número entero decimal, luego se divide por los pesos correspondientes 10 pesos. Crear un bucle, de modo que el valor decimal de los respectivos pesos de la inicialización suma peso 0,10 j = 0, los elementos de matriz de caracteres 0-9 determina si el punto decimal, si, después de desplazar el punto decimal, suma = suma * 10 elementos + correspondientes valor, el peso correspondiente del peso 10 j más uno, hasta que el siguiente elemento no pertenece a 0-9.
  2. El algoritmo es como sigue
    Aquí Insertar imagen Descripción

Para el manejo de signo negativo

Posición aparece signo negativo es el primer elemento de la matriz de caracteres o la parte posterior de los elementos de soporte izquierdo. Para evitar menos "-" confuso, está determinada por los elementos de la primera elemento de la matriz de caracteres o paréntesis izquierdo es "-" Encuentra signo menos, y se sustituye con "M". Cuando se transfecta infija sufijo si el elemento es de salida "M" "-". , Si el valor después del elemento es el elemento "M" sufijo cuando el valor calculado (incluyendo decimales) en funcionamiento después de que el número opuesto.

El diagrama de flujo del programa principal y la relación entre cada módulo de llamadas

Aquí Insertar imagen Descripción

Diseño físico

  1. memoria abierta basado matrices de almacenamiento para lograr un continuo, la declaración de C define la estructura marco de pila carácter que comprende una matriz de caracteres, para el reenvío de postfix infija
    Aquí Insertar imagen Descripción

  2. Significado del nodo correspondiente
    Aquí Insertar imagen Descripción

  3. Y fuera de las operaciones de la pila
    Aquí Insertar imagen Descripción

  4. C declaración define el número entero pila estructura de trama que comprende una matriz de enteros, para el cálculo de la expresión de sufijo.
    Aquí Insertar imagen Descripción

  5. Significado del nodo correspondiente
    Aquí Insertar imagen Descripción

  6. Y fuera de las operaciones de la pila
    Aquí Insertar imagen Descripción

prueba

  1. Un caso de prueba
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción
  2. resultados de la prueba
    Aquí Insertar imagen Descripción

Fuente (con comentarios)

El código está escrito en la versión en lenguaje C, el tiempo hará un seguimiento de la versión Java
enlace de códigos de GitHub

Si la cosecha? Esperamos que el doble de la edad de hierro batido, dando a más gente vea este artículo

1, el hierro viejo que prestan atención a mi número pública original de micro-canales "mono del programa avanzado", principalmente de TI y la competencia

2, la escritura no es fácil, por el punto de paso un canto de alabanza, para que más gente pueda ver este artículo, estoy entusiasmado con este blanco.

Publicado 98 artículos originales · ganado elogios 327 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/JAck_chen0309/article/details/104841005
Recomendado
Clasificación