public void imprimir(string [] operacion)
Console.SetCursorPosition(18,6); Console.WriteLine("Resultado = " + operacion[1]);
public void buscaresp(byte pcdo, byte pato, string[] operacion)
for (; pato <= pcdo; pato++)
if (operacion[pato] == " ")
cambio = operacion[pato];
operacion[pato] = cambio;
public void organiza(byte pcdo, byte pato, string[] operacion)
byte ultimo = 0; string cambio; byte posb =0;
posb = Convert.ToByte(ultimo - 1);
while ( ((posb != 255) &&(posb >= 0) ) && (operacion[posb] == " ") )
cambio = operacion[ultimo];
operacion[posb] = cambio;
public void parentesis (string [] operacion, byte pfin)
byte abierto = 0, pcdo = 0, pato = 0,a,b,k,contar;
double x=0, y=0, resultado=0;
partedos organizar = new partedos();
partedos acomodar = new partedos();
for (byte i = 0; i <=pfin ; i++)
if ( (operacion[i] == "(") )
pato = i; pcdo = i; pcdo += 1;
while( (operacion[pcdo] !="(") && (operacion[pcdo]!=")"))
if (operacion[pcdo] != "(")
byte j=Convert.ToByte (pato + 1);
x = Convert.ToDouble(operacion[a]); y = Convert.ToDouble(operacion[b]);
operacion[a] = Convert.ToString(resultado);
operacion[j] = " "; operacion[b] = " ";
organizar.buscaresp(pcdo, pato, operacion);
acomodar.organiza(pcdo, pato, operacion);
x = Convert.ToDouble(operacion[a]); y = Convert.ToDouble(operacion[b]);
operacion[a] = Convert.ToString(resultado);
operacion[j] = " "; operacion[b] = " ";
organizar.buscaresp(pcdo, pato, operacion);
acomodar.organiza(pcdo, pato, operacion);
j = Convert.ToByte(pato + 1);
x = Convert.ToDouble(operacion[a]); y = Convert.ToDouble(operacion[b]);
operacion[a] = Convert.ToString(resultado);
operacion[j] = " "; operacion[b] = " ";
organizar.buscaresp(pcdo, pato, operacion);
acomodar.organiza(pcdo, pato, operacion);
x = Convert.ToDouble(operacion[a]); y = Convert.ToDouble(operacion[b]);
operacion[a] = Convert.ToString(resultado);
operacion[j] = " "; operacion[b] = " ";
organizar.buscaresp(pcdo, pato, operacion);
acomodar.organiza(pcdo, pato, operacion);
k = Convert.ToByte(pato - 1);
if (operacion[k] == "+" || operacion[k] == "(" || operacion[k] == ")" || operacion[k] == "-" || operacion[k] == "*" || operacion[k] == "/")
operacion[pato] = " "; operacion[pcdo] = " ";
acomodar.organiza(pcdo, pato, operacion);
operacion[pato] = "*"; operacion[pcdo] = " ";
acomodar.organiza(pcdo, pato, operacion);
for (int z = 0; z <= 19; z++)
if (contar == 1) abierto = 1;
static void Main(string[] args)
Console.Title = ("calculadora jerarquica----Clipto");
string [] operacion = new string[23];
partedos enviar = new partedos();
parte3 final = new parte3();
operacion[0] = "("; operacion[19] = ")";
temp1 = Convert.ToString(Console.ReadKey().KeyChar);
if (temp1 == "+" || temp1 == "(" || temp1 == ")" || temp1 == "-" || temp1 == "*" || temp1 == "/")
operacion[pos] = operacion[pos] + temp1;
if (temp1 == "+" || temp1 == "(" || temp1 == ")" || temp1 == "-" || temp1 == "*" || temp1 == "/")
if (temp2 == "+" || temp2 == "(" || temp2 == ")" || temp2 == "-" || temp2 == "*" || temp2 == "/")
pos++; operacion[pos] = temp1; pos++;
operacion[pos] = operacion[pos] + temp1;
temp2 = Convert.ToString(Console.ReadKey().KeyChar);
if (temp2 == "+" || temp2 == "(" || temp2 == ")" || temp2 == "-" || temp2 == "*" || temp2 == "/")
if (temp1 == "+" || temp1 == "(" || temp1 == ")" || temp1 == "-" || temp1 == "*" || temp1 == "/")
pos++; operacion[pos] = temp2; pos++;
operacion[pos] = operacion[pos] + temp2;
} while ((pos < 19) && (temp1 != "\r") && (temp2 != "\r"));
enviar.parentesis(operacion,pfin);
final.imprimir(operacion);
for (int m = 0; m <= 19; m++)
Console.SetCursorPosition(posx, 6); Console.WriteLine(operacion[m]);