You are on page 1of 2

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
//--Incluyendo el
//--Espacio de nombres del assembly
using Itgam.DataStructures;
namespace Pk19_ArithPro
{
class ArithPro
{
static void Main(string[] args) //boton accion onclick
{
//Creando los objetos stack
GenStack<char> operadores = new GenStack<char>();
GenStack<double> valores = new GenStack<double>();
//--Se almacenara el caracter leido
int iCaracter;

while ((iCaracter = Console.Read()) != -1)


{
iputextra Console.Write(((char)iCaracter).ToString());
//--Push si el caracter leido
//--Es un operador
switch ((char)iCaracter)
{
case '(':
case ' ':
//--No hacer nada
break;
case '+':
case '-':
case '*':
case '/':
operadores.Push((char)iCaracter);
break;
case ')':
//--En caso de ser un parntesis de cierre
//--Evaluar
//--Extraer operador
char op = operadores.Pop();
//--Extraer valor
double val = valores.Pop();
switch (op)
{
case '+':
val = valores.Pop() + val;
break;
case '-':
val = valores.Pop() - val;
break;
case '*':
val = valores.Pop() * val;
break;
case '/':
val = valores.Pop() / val ;
break;
}
valores.Push(val);

break;
default:
//--Se almacena el caracter leido en un char
char charValor = (char)iCaracter;
//--Se convierte a string
string stringValor = charValor.ToString();
//--Se parsea a Doble
val = double.Parse(stringValor);
//Se pushea en valores
valores.Push(val);
break;
}
}
//--Para obtener el resultado final se popea
Console.Write("\nResultado= {0}", valores.Pop());
System.Threading.Thread.Sleep(3000);

You might also like