Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

solucion 4 alumno

#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