Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/01/2010, 04:45
Megamouse
 
Fecha de Ingreso: enero-2010
Mensajes: 24
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: AYUDA!!! Cómo ejecutar valor de una variable en C???

Tienes que crearte un programa que traduzca la operacion a algo entendible por c.

Este es un ejemplo que serviria para operaciones sencillas (como la que tu has puesto):

Código C:
Ver original
  1. int main ()
  2. {
  3.   int i, j;
  4.   int num_numeros=0;
  5.   int num_comandos=0;
  6.   int numeros[10];
  7.   int val_aux;
  8.   char comando[10];
  9.   char var_aux[10];
  10.  
  11.   char operacion[100]="2 + 3 - 1 + 9-3  + 4";
  12.  
  13.   memset (var_aux, 0, sizeof(var_aux));
  14.   memset (comando, 0, sizeof(comando));
  15.  
  16.   j=0;
  17.   for (i = 0; i < strlen (operacion); i++)
  18.   {
  19.     if (operacion[i] >= '0' && operacion[i] <= '9')
  20.     {
  21.       var_aux[j] = operacion[i];
  22.       j++;
  23.     }
  24.     else
  25.     {
  26.       if (j>0) /* Si no es numero quiere decir que ya tenemos el valor completo */
  27.       {
  28.         numeros[num_numeros] = atoi (var_aux);
  29.         num_numeros++;
  30.         j=0;
  31.         memset (var_aux, 0, sizeof(var_aux));
  32.       }
  33.      
  34.       if (operacion[i] != ' ') /* si no es un blanco tiene que ser un operador +,-,* */
  35.       {
  36.         comando[num_comandos] = operacion[i];
  37.         num_comandos++;
  38.       }
  39.     }    
  40.   }
  41.  
  42.   if (j>0) /* lo ponemos de nuevo pora pillar el ultimo numero */
  43.   {
  44.     numeros[num_numeros] = atoi (var_aux);
  45.     num_numeros++;
  46.     j=0;
  47.     memset (var_aux, 0, sizeof(var_aux));
  48.   }
  49.  
  50.   /* cada 2 numeros tiene que haber un operador 'a + b' */
  51.   /* con lo que si tenemos a + b - c :
  52.        1) 'a + b' calculamos la primera operacion
  53.        2) '(a+b) - c' para la siguiente operacion usamos el resultado anterior */
  54.  
  55.   j=0;
  56.   for (i=0; i<num_comandos; i++)
  57.   {
  58.     switch (comando[i])
  59.     {
  60.       case '+':
  61.         val_aux = numeros[j] + numeros[j + 1];
  62.         numeros[j+1] = val_aux;
  63.         j++;
  64.         break;
  65.      
  66.       case '-':
  67.         val_aux = numeros[j] - numeros[j + 1];
  68.         numeros[j+1] = val_aux;
  69.         j++;
  70.         break;      
  71.       /* case '*' case '/' si quieres poner mas operaciones */
  72.     }
  73.   }
  74.  
  75.   fprintf (stderr, "OP: [%s] -> [%d]\n", operacion, numeros[j]);
  76.  
  77.   return 0;
  78. }

Algunos ejemplos:

OP: [2 + 3 - 1] -> [4]
OP: [2 + 3 - 1 + 9-3 + 4] -> [14]