#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float operacion(char *,float,float);// char es operacion, 1º float es resultado, 2º float en numero que carga
int main(int argc, char **argv)
{
int c=0; // contador
float resultado=0; // contiene el resulado
char operador[10]; // contiene la operacion que estoy analizando
float numero=0; // arguemento convertido en numero
// while (c<argc) {
// printf("Argumento nº %d, es el %s \n",c,argv[c]);
// c++;
// }
c=1;
strcpy(operador,"+");
while (c<argc) {
if (strcmp(argv[c],"-")==0) {
strcpy(operador,"-");
} else {
if (strcmp(argv[c],"+")==0) {
strcpy(operador,"+");
} else {
if (strcmp(argv[c],"x")==0) {
strcpy(operador,"x");
} else {
if (strcmp(argv[c],"/")==0) {
strcpy(operador,"/");
} else {
// o es numero o un operador desconocido...
//convierto el argumento en un numero float
numero=atof(argv[c]);
resultado=operacion(operador,resultado,numero);
strcpy(operador," "); // reinicio el operador, lo siguiente tiene que ser un operador
}
}
}
}
c++;
}
printf("%f\n",resultado);
return 0;
}
// funcion de realizacion de operacion
float operacion(char *ope,float resultado,float numero)
{
if (strcmp(ope,"-")==0) {
return resultado-numero ;
}
if (strcmp(ope,"+")==0) {
return resultado+numero ;
}
if (strcmp(ope,"x")==0) {
return resultado*numero ;
}
if (strcmp(ope,"/")==0) {
return resultado/numero ;
}
printf("Error: operador no entindido %s",ope);
return 1;
}
nota:
El * me daba problemas con lo cual tuve que poner "x" , supongo que el sistema entiende que es un comodin.
No hay comentarios:
Publicar un comentario