Red de conocimiento informático - Consumibles informáticos - Colección completa de preguntas del concurso de programación para estudiantes de secundaria

Colección completa de preguntas del concurso de programación para estudiantes de secundaria

Calculadora con representación polaca inversa

No sé si esto es consistente. Este es el código de pregunta (modificado) de una pregunta que respondí.

El código es el siguiente:

# include ltstdio.h gt

# include ltctype.h gt

# include ltstdlib. h gt

#¿Definición? ¿Número? '0'

¿No válido? ungetch(char?c);

int? getch();

int? getop(char?* s);

¿No es válido? Push (¿doble? número);

¿Doble? pop();

/*Lo anterior es la parte explicativa de la declaración*/

int? main(){

¿Carácter? *s, c;

¿Doble? op _ temp

s=(char?*)malloc(100 * sizeof(char));

Printf("Calculadora en representación polaca inversa\nUso:? ¿Ingresar dos valores? Luego ingrese el símbolo de operación (por ejemplo: 3? 4? ?5?*(Enter) significa (3 4)* 5)\ n ");

Printf("Publishing Press

mientras((c=getop(s))!=EOF)

{

Cambiar (c)

{?

caso? número?: printf("NÚMERO: s\n ", s); push(atof(s));?

caso? ' '?: push() pop()); ;

caso? '-'?: op _ temp = pop(); push(pop()-op _ temp;

caso '*'? push(pop()* pop());

caso? '/'?: if((op _ temp = pop())) push(pop() /op _ temp);

Caso? \n': printf("resultado=.8g\n ", pop());

Caso 27: Salir(0);

¿Incumplimiento?: printf("Error, ¿desconocido? c\n ", c);

}

}

¿Regresar? p>

}

/*Analizar parte del flujo de texto*/

int?getop(char?*s1){

char c;

int? I = 0; //printf("c: d\n ", c = getch());

while((c=getch())== ' ?'| c = = ' \ t ');

* s 1 = c;

Si (! isdigit( c))return c; carácter?

while((c=getch())!EOF amp ampc!=13)

{

if(es dígito(c)){ s 1[I]= c; s 1[I 1]= ' \ 0 ';}

// ¿La función principal original solo se aplica a los punteros y no se asigna memoria? una matriz, ¿vale?

Otro

{

if(c== ' . ')

{

s 1[ I]= c;

Continuar;

}

Otro

{

un getch(c) ;

s 1[ I]= ' \ 0 ';

¿Regresión? Número;

}

}

}

¿Volver? c;

}

/* Obtener caracteres y rebobinarlos */* Sin límite en el número de caracteres en la pila de caché */

int? c pointer[100];

/*¿Qué pasa si esto se cambia a? int? *cpuntero? , ¿habrá algún error al calcular el punto flotante*/

int? c_cuenta = 0; int? getch(){

¿Volver? (c_count gt0)?cpointer[-c_count]? :?getchar();

}

¿No es válido? ungetch(char?c){

c pointer[c _ count]= c;

}

/*Dentro y fuera de la pila*/

¿Doble? *number_stack=(double?*)malloc(100 * sizeof(double));

int? n _ count = 0;

¿No es válido? push(doble? número){

número _ pila[n _ recuento] = número

}

¿Doble? pop(){

if(n _ count gt; 0)

¿Regresión? Pila de números [-n recuento];

¿Qué más? printf("¿Error? de? pop");

¿Devolver? 0;

}