1. Descripción general de funciones: este programa puede calcular los resultados de fórmulas con corchetes dobles, como ((3+2)*(3+2)+5)*((3). +2)*(3+2)+5)*(5+5)=El resultado de salida es 9000.
2. Programa fuente:
# include & ltstdio.h & gt
int w;
Doble B[4][ 40];
shuru(char *pt)
{
int i=0, m;
Hacer
{
*(pt+I)= getchar();
m = I;
i++;
}
mientras(*(pt+m)!='=');
*(pt+m)= '+';
*(pt +m+1)= ' = ';
}
tlchli(char *p)
{
int a, b ;
if(*p=='-'||*p=='+')
{
for(b = 0;*( p+b)! ='=';b++)
;
for(;b & gt=0;b -)
*(p+ b+ 1)= *(p+b);
* p = ' 0
}
Otros
{
for(a = 1;*(p+a)!='=';a++)
{
if(*(p+a)==' - '||*(p+a)=='+')
{
if(*(p+a-1)= '(' &&*(p +a+1)>= ' 0 ' & amp& amp*(p+a+1)& lt;='9')
{
for(b = 0; *(p+a+b)! ='=';b++)
;
for(;b & gt=0;b -)
*(p+a+b+ 1)= *(p+a+b);
*(p+a)=“0”;
a =( a+1 );
}
}
}
}
}
jgh (doble B[4][40], char *p)
{
int a, b, c=0, d, e, f, h, I, k, n, m;
Doble g=0, j = 0;
for(a = 0; a & lt4;a++)
for (b = 0; b & lt40; b++)
b[a]= 0;
for(d = 0;*(p+d)! ='=';d++)
{
if(*(p+d)= = '+' | | *(p+d)= = '-' | | *(p+d)= = ' * ' | *(p+d)= = '/')
{
if(*(p+d)= = '+')B[3][c]= '+';
if(*(p+d)= = '-')B[3][c]= '-';
if(*(p+d)= = ' * ' B[3][c]= ' * ';
if(*(p+d)= = '/ ')B[3][c]= '/';
if(*(p+d-1)= ')' & amp;& amp*(p+d-2)== ')')
{
b[0][c]= ')';
b[1][c]= ')';
}
if(*(p+d-1)= ')' & amp; & amp*(p+d-2)! =')')
b[1][c]= ')';
for(e = d-1;*(p+e)<0 ' | | *(p+e)>;'9'
;e -)
;
for(f = e;*(p+f)!='.'& amp& amp(f & gt0)& amp;& amp* (p+f)>= ' 0 ' & amp& amp*(p+f)& lt;='9';f -)
;
if(*(p +f)== ' . ')
{
for(h = f-1; (h & gt= 0)&&*(p+h) >= ' 0 ' & amp& amp*(p+h)& lt;='9';h -)
;
h++;
si (* (p+h-1)= '(' & amp;& amp*(p+h-2)== '(')
{
b[0 ][ c]= '(';
b[1][c]= '(';
}
if(*(p+h -1 )= '(' &&*(p+h-2)!='(')
b[1][c]= '(';
for( I = h;*(p+i)>= ' 0 ' & amp& amp*(p+I)& lt;='9';i++)
g =(*( p+I) -48)+g * 10.0;
for(k = f+1;*(p+k)>= ' 0 ' & amp& amp*(p+k)& lt; ='9' ;k++)
;
k-;
for(n = k;*(p+n)>= ' 0 ' & amp& amp*( p+n)& lt;='9';n -)
j =(j/10.(*(p+n)-48)/10.0);
b[2][c]=(g+j);
g = j = 0;
}
Otros
{
for(m = e;*(p+m)>= ' 0 ' & amp& amp*(p+m)& lt;='9';m-);
m++;
if(*(p+m-1)= '(' & amp;& amp*(p+m-2)== '(')
{
b[0][c]= '(';
b[1][c]= '(';
}
if(*(p+m-1)= '(' &&*(p+m-2)!='(')
b[1][c ]= '(';
for(I = m;*(p+i)>= ' 0 ' & amp& amp*(p+I)& lt;=' 9';i++)
g =(*(p+I)-48)+g * 10.0;
b[2][c]= g;
g = 0
}
c++;
}
}
w =( c-1);
}
qkh1(doble B[4][40])
{
int a=1 , b, c, d , e, f, j, k;
for(b = 0; b & ltw; b++)
{
si (B[a]= = '(')
{
for(c = b;B[a][c]! =')';c++)
;
for(d = b+ 1;B[a][d]!= '(' &&d<c;d++ )
;
if(B[a][d]== '(')
k = d;
Otros
k=b;
<p>b[a][k]= 0; b[a][c]= 0;
for(e = k; e & ltc; e++)
{
if(B[3][e]=='* ')
{
B[2][e+1]= B[2] [e]* B[2][e+1];
if(B[3][e-1]= = '-' & amp;& amp(e & gt0)) p>
{
b[2][e]= 0
b[3][e]= '-';
Otro
{
b[2][e]= 0
b[3][e]= '+ ';
}
}
if(B[3][e]=='/')
{ p>
B[2][e+1]= B[2][e]/B[2][e+1];
if(B[3][e-1 ]= = '-' &&e>0)
{
b[2][e]= 0;
b[3] [e]= '-';
}
Otro
{
b[2][e]= 0;
b[3][e]= '+';
}
}
}
para (f = k
if(B[3][f]=='+')
{
B[2][f+1]= B[2][f]+B[2][f+1];
b[2][f]= 0 ;b[3 ][f]= '+';
}
if(B[3][f]=='-')
{
B[2][f+1]= B[2][f]-B[2][f+1];
b[2][f] = 0; [3][f]= '+';
}
}
b = c-1; [3][k-1]= = ' * ' & amp; & ampk & gt0)
{
for(;k & ltc;k++)
{
b[3][k]= ' * ';
b[2][k]=
}
}
if(B[3][k-1]= = '/' & amp;& ampk & gt0)
{ p>
for(;k & ltc;k++)
{
b[3][k]= '/';
b[ 2][k ]= 1.0;
}
}
}
}
for(j = 0;j< = w;j++)
{
if(B[1][j]! = '(' &&B[1][j]!=')')
B[1][j]= B[0][j];
}
}
qkh2(doble B[4][40])
{
int a, b, c, d, e, f, j;
for(b = 0; b & ltw; b++)
{
if(B[1]== '( ')
{
for(c = b;B[1][c]!=')';c++)
;
p>b[1]= 0; b[1][c]= 0;
for(e = b; e & ltc; e++)
{
if(B[3][e]=='*
')
{
B[2][e+1]= B[2][e]* B[2][e+1];
if(B[3][e-1]= = '-' & amp;& amp(e & gt0))
{
b[2][e ]= 0;
b[3][e]= '-';
}
Otro
{
b[2][e]= 0;
b[3][e]= '+';
}
}
if(B[3][e]=='/')
{
B[2][e+1]= B[2] [e]/B[2][e+1];
if(B[3][e-1]= = '-' & amp;& amp(e & gt0)) p>
{
b[2][e]= 0
b[3][e]= '-';
Otro
{
b[2][e]= 0
b[3][e]= '+ ';
}
}
}
for(f = b; f & ltc; f++)
{
if(B[3][f]=='+')
{
B[2][f+1]= B[2][f]+B[2][f+1];
b[2][f]= 0; b[3][f]= '+';
}
if(B[3][f]=='-')
{
B[2][f+1 ]= B[2][f]-B[2][f+1];
b[2][f]= 0; b[3][f]= '+';
}
}
if(B[3][B-1]= = ' * ' & amp; & ampb & gt0)
{
for(;b & ltc;b++)
{
b[3]= ' * ';
b[2]= 1.0;
}
}
if(B[3][B-1]= = '/' & amp; & ampb & gt0)
{
for(;b & ltc;b++)
{
b[3]= ' /';
b[2]= 1.0;
}
}
}
}
}
jshjg(doble B[4][40])
{
int b, d, e, f <; /p>
for(e = 0; e & ltw; e++)
{
if(B[3][e]=='* ') p>
{
B[2][e+1]= B[2][e]* B[2][e+1];
si( B[3][e-1]= = '-' &&e>0)
{
b[2][e]= 0;
b[3][e]= '-';
}
Otros
{
b[2 ][e] = 0;
b[3][e]= '+';
}
}
si (B[3 ][e]=='/')
{
B[2][e+1]= B[2][e]/B[2 ][e+ 1];
if(B[3][e-1]= = '-' & amp; & ampe & gt0)
{
b [2][e]= 0;
b[
3][e]= '-';
}
Otros
{
b[2][e]= 0 ;
b[3][e]= '+';
}
}
}
for(f = 0; f & ltw; f++)
{
if(B[3][f]=='+')
{
B[2][f+1]= B[2][f]+B[2][f+1];
b[2][f] = 0; b[3][f]= '+'
}
if(B[3][f]=='-')
{
B[2][f+1]=(B[2][f]-B[2][f+1]);
b[2 ][f]= 0; b[3][f]= '+'
}
}
}
shuchu(doble B[4][40], char *p)
{
printf("Respuesta %f\n ", B[2][w]);
}
Principal()
{
char *p, A[100];
Shu Ru (1);
p = & ampa[0];
tlchli(p);
jgh(B, p);
qkh 1(B);
qkh 2(B);
jshjg(B);
Shu Chu(B, p); p>
p>
}
#Contiene "string.h"
#Contiene "graphics.h"
#Contiene "conio .h" p>
#Incluir "dos.h"
#Incluir "tiempo.h"
#Incluir " stdlib.h "
#Incluye "stdio.h"
#Contiene "math.h"
/*Llama a una serie de funciones de biblioteca*/
int py/ *Definir una variable global* /
Modo vacío (int py)/*función de modo, utilizada para configurar y utilizar varias funciones informáticas de la calculadora*/
{ double x1, x2 , ans, ans 2 ;
if(py & lt;11)
{ printf("entrada x1, x2:");
scanf(" %lf,%lf "y ampx1.
x2);}
else { printf(" entrada x:"); scanf("%lf ", & ampx 1);}
Cambiar (py)
{Caso 6: ans = x 1+x2; printf("=%.3lf ", ans);
Caso 7: ans = x 1-x2; .3lf ", ans); break;
Caso 8: ans = x 1 * x2; printf ("=%.3lf ", ans); break;
Caso 9: ans = x 1/x2; printf("=%.3lf ", ans);
Caso 10: ans=pow(x1, x2); .3lf",x2,ans); romper;
caso 11:ans = sqrt(x 1); printf("=%.3lf ",ans); romper;
Caso 12: ans = sin(x 1); ans2 = cos(x 1); printf("sin x=%.3lf, cos x=%.3lf ", ans, ans 2); p>Caso 13: ans = asin(x 1); ans 2 = acos(x 1); printf("asin x=%.3lf, acos x=%.3lf ", ans, ans 2); p>
}
getch(); clr SCR();
}
Int join(char *ps) /*se ingresa la función de unión El nombre de usuario y la contraseña pueden coincidir con el usuario registrado.
Los usuarios registrados pueden utilizar funciones avanzadas*/
{ char name[30], pass[20]
int len, I
printf(" ID; :");
scanf("%s ", nombre);
printf(" \ n contraseña:");
scanf("% s ", pasar);
clr SCR();
for(I = 0;i<strlen(PS);i++)
if(pasar [i ]! =*(ps+i)) devuelve 0;
devuelve 1;
}
int menú(int pass)/*menú función, menú */
{ int py = 6; char clave = 0;
gotoxy(1, 4
printf(" MENÚ \ n \ n ");
printf(" AGREGAR+\ n ");
printf(" SUB-\ n "); );
printf(" DIV/");
gotoxy(10, 6); printf(" & lt;-");
if( pasar) {gotoxy(1, 10); printf(" inv ^\n ");
printf(" EVO ~ \ n ");
printf(" SIN COS \ n ");
printf("ACOS \ n ");
printf(" modificar \ n ");
printf( " SALIR "); }
else {gotoxy(1, 10); printf(" QUIT ");}
And (key!=13) /*Las siguientes son selecciones de control Todas las declaraciones en el posición de la flecha */
{ key = getch();
Interruptor (tecla)
{Caso 80: gotoxy(10, py); "); if (!pass) py = py % 5+6; else { ++ py; if (py == 16) py = 6; } roto;
Caso 72: gotoxy (10, py); printf (" "); -py; si (py = = 5)py = 15 * pasar
}
gotoxy(10 , py) ; printf(" <-");
}
Devuelve py;
}
Principal() /*Función principal , declaraciones sobre la asignación de funciones y el inicio de la animación*/
{ int gd=DETECT, gm, x=320, y=10, I, l=10, h=10, t, co=3, v = 0;
int pass
ARCHIVO * fpchar PS[20];
init gráfico(& amp; gd, & ampgm, ""; /* Inicializar el modo de gráficos*/
registerbgidriver(EGA VGA_driver);
for(I = 1;i<31;co=(co++%10), v++, y++ = 2+v, i++ )
{ retraso(9e 10); borrar dispositivo();
establecer color(co);
setfillstyle (1, co
Sector (x, y, 0, 360, l, h) /*Dibujar un círculo*/);
p>
}
for(I = 1;i<300;i++)
{ establecer color(I % 10);
circle( x, y, I);
Retraso (1000); /*Retraso*/
}
borrar dispositivo(); /*Borrar pantalla* / p>
closegraph();
fp=fopen("file1", "r");
if(FP == NULL) pasar = 1; >
else {fgets(ps, 20, FP);
pasar = unirse(PS);}
LD:py = menú(pasar);
if(py = = pasar * 5+10){ clrscr(); printf("¡Adiós!"); getch(); return }
else if(py! = 14) { clrscr(); modo (py); } else { fp=fopen("file1", "w");
printf("\n contraseña:");
scanf("%s ", PS);
fputs(ps, FP);
fclose(FP); clr SCR();
}
goto ld/*Saltar dentro de la función*/
}
# include & ltstdio.h & gt/*Función de biblioteca */
Nodo de estructura
{
int data;
struct s _ node * next
}; p>
estructura typedef s_node s_list
typedef s_list * enlace
Operador de enlace = NULL
Operando de enlace = NULL p>
Enlace push(pila de enlaces, valor int)
{
Enlace nuevonodo
nuevo nodo = (enlace) malloc(sizeof(s_list) );
if (! nuevo nodo)
{
printf("\n¡¡¡Error en la asignación de memoria!!!" );
Devolver NULL
}
Nuevo nodo->data=value;
Nuevo nodo->next =stack;
pila = newnode
Volver a la pila;
}
Vínculo emergente (pila de enlaces, int *valor)
p>{ p>
Enlace superior;
if (stack! = vacío)
{
arriba = pila;
pila = pila-> siguiente;
* valor = arriba -> ;Datos;
Gratis (Parte 1);
Devolver pila;
}
Otros
* valor =-1;
}
int vacío (pila de enlaces)
{
if(stack==NULL) p>
Devuelve 1;
Otros
Devuelve 0;
}
int is_operator (operador de carácter)
{
Interruptor (Operador)
{
Caso'+':Caso'-':Caso' * ':Caso'/' : devuelve 1;
Valor predeterminado: devuelve 0;
>
int precedencia (operador de carácter)
{
Interruptor (operador)
{
Caso' +':caso '-':return 1;
case "*":case "/":return 2;
Valor predeterminado: return 0;
} p>
}
int two_result(int operador, int operando1, int operando2)
{
switch(operador)
{
case '+':return(operando 2+operando 1);
case '-':return(operando 2-operando 1); >case ' * ':return(operando 2 * operando 1);
case '/':return(operando 2/operando 1);
}
}
void main()
{
expresión char[50];
int posición = 0;
int op = 0;
int operando 1 = 0;
int operando 2 = 0
int evaluar = 0;
printf("\nIngrese la expresión secuencial:");
gets(expresión);
while(expresión[posición] ! = ' \ 0 ' & amp& ampexpresión [posición]! ='\n ')
{
if(is_operator(expresión[posición]))
{
if(!null(operador))
while(prioridad(expresión[posición])<=prioridad(operador-> ; datos); & amp
! vacío (operador) )
{
operando=pop(operando& ampoperando 1);
Operador=pop(operando& operación2);
Operador=pop (operador&op);
Operador=push(operando, dos_resultados(op, operando1, operando 2));
}
Operador=push(operador, expresión [posición]);
}
Otros
Operador=push(operando, expresión [posición]-48);
posición++ ;
}
p>
Y (! Vacío(operador))
{
Operador=pop(operador&op);
Operador=pop(operando&operando 1) ;
Operación =pop(operando&operación2);
Operación=push(operando, dos_resultados(op,operando1,operando2));
}
Operando=pop(operando & amp evaluación);
printf("La expresión [%s] da como resultado ' %d ' ", expresión, evaluar);
getch();
}