Red de conocimiento informático - Computadora portátil - Programación de brackets

Programación de brackets

He escrito un programa antes que puede realizar cuatro operaciones aritméticas en expresiones de números reales, incluidos los paréntesis (no sé a qué se refiere su "operador unario"), evitar errores de división por 0 y verificar la legalidad de la expresión.

# incluir & ltstdio.h & gt

# incluir & ltstring.h & gt

char s 1[100];

flotador S2[100];

int n2

void cal(int x){

interruptor(x){

Caso 1:S2[N2-2]+= S2[N2-1]; romper;

Caso 2: S2[N2-2]-= S2[N2-1];

Caso 3: S2[N2-2]* = S2[N2-1]; romper;

Caso 4: if(S2[N2-1])S2[N2-2]/= S2[N2-1]; de lo contrario, arroja 0;

}

N2-;

}

Callall flotante(){

int pila[100], ns = 0;

int n 1 = strlen(s 1);

fin del número bool = 0; ;

for(int I = 0;i<n 1;){

if(s 1[I]>47 &&s 1[I]< ;58){

if(numberend) arroja 1; number end = 1;

sscanf(s1+i, " %f ", & ampS2[n2++]); s 1[I]& gt; 47 & amp& amplificadores 1[I]& lt;|s1[i]== ' )i++; * sop = "(+-*/)";

int op=strchr(sop, s 1[i++])-sop

if(op<0||op>6; )tirar 3;

if(op == 0){ if(fin del número)tirar 1;nbracket}

if( op = = 5){ if(nbract<=0 )lanza 2;nbracket}

if(op>0&&op<6&&!numberend)lanza 1

if(op & gt; 0 & amp& ampop & lt5)número final = 0; /p>

if(op == 1 | | op = = 2 | | op = = 5 ) while(ns & gt; 0 & amp& amp pila[ns-1]>0)cal(pila[-ns ]);

if(op == 3 | | op == 4) while (ns & gt; 0 && stack[ns-1]>2)cal(stack[-ns]);

if(op<5)stack[ns++]=op;

if(op = = 5)ns-;

}

if(nbract) vota 2;

if (! fin de número) arroja 1;

while(ns)cal(stack[-ns]);

Devuelve S2[0];

}

void main(){

Printf("Para números negativos, utilice: (0-número positivo), Ingrese: a+Enter\n "Salir);

mientras (1){

N2 = 0;

scanf("%s ", s 1);

if(s1[0]==' a '

) return;

Pruebe { printf("%g\n ", callall());}

catch(int x){

Cambiar ( x ){

Caso 0: printf("no se puede dividir por 0\n "); roto;

Caso 1: printf("posición incorrecta del operador\n") ;Romper;

Caso 2: printf("Los corchetes izquierdo y derecho no coinciden\n");Break;

Caso 3: printf("Carácter no válido\n");Break;

}

}

}

}